如何将字符串转换为JSON并转换回来?

时间:2013-08-26 13:32:03

标签: java ruby json

我需要将“漂亮”的JSON转换为紧凑格式,所以我按照以下步骤操作:

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

    这是“漂亮”的版本:

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

    紧凑后的版本:

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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"}