-3

我需要将“漂亮”的 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不接受它。

4

2 回答 2

1

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

于 2013-08-26T13:37:44.783 回答
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"}
于 2013-08-26T13:50:39.357 回答