2013-08-26 117 views
-3

我需要转换“漂亮”的JSON紧凑的格式,所以我遵循下列步骤操作:如何将字符串转换为JSON并转换回来?

  1. 从文件中读取“漂亮”的JSON。
  2. temp = JSON.parse(json_string)
  3. jsonstring = temp.to_s
当我解析 json_string它抛出 unexpected token

这是 “漂亮” 的版本:

{ 
    "key1" : "value1", 
    "key2" : "value2" 
} 

和版本之后紧凑:

{"key1"=>"value1","key2"=>"value2"} 

当我在编写Java,我可以:,=>分隔符解析JSON。但是Ruby不接受它。

回答

1

尝试jsonstring = temp.to_json,而不是jsonstring = temp.to_s,它将散列转换为字符串,而不是JSON编码。

0

Ruby的JSON允许你写:

JSON[JSON[json_string]] 

这相当于:

(JSON.parse(json_string)).to_json 

在第一个例子,JSON看起来在类的参数,并认为如果它是一个字符串,如果是,则将其解析为Ruby哈希。然后外部的JSON检查它的参数,看到它是一个散列并将它变回JSON字符串。有关更多信息,请参阅JSON[]

require 'json' 

str = '{ 
    "key1" : "value1", 
    "key2" : "value2" 
}' 

puts str 
# >> { 
# >> "key1" : "value1", 
# >> "key2" : "value2" 
# >> } 

JSON[str] # => {"key1"=>"value1", "key2"=>"value2"} 

puts JSON[JSON[str]] 
# >> {"key1":"value1","key2":"value2"}