如何解析rails中jsonArray格式的String(不是json对象)?

时间:2015-07-30 04:54:42

标签: json ruby-on-rails-4

这是我的值JSON数组的字符串形式(不是JSON对象)

value= "[{\"a\":\"test a\"},{\"b\":\"test b updated\"}]"

当我尝试使用

将其转换为JSON时
value=value.to_json
#value= "\"[{\\\"a\\\":\\\"test a\\\"},{\\\"b\\\":\\\"test b updated\\\"}]\""

但我希望我的价值像这样

{"a":"test a","b":"test b updated"}

有任何建议吗?

2 个答案:

答案 0 :(得分:1)

首先,您需要将JSON字符串转换为Ruby值:

arr = JSON.parse(value)
# => [ { "a" => "test a" },
#      { "b" => "test b updated" } ]

这将返回一个Ruby数组,其项目为哈希值。

接下来,您需要将哈希值合并为一个哈希:

combined_hash = arr.reduce({}, &:merge)
# => { "a" => "test a",
#      "b" => "test b updated" }

最后,将哈希值转换回JSON:

puts combined_hash.to_json
# => {"a":"test a","b":"test b updated"}

所有在一起:

arr = JSON.parse(value)
combined_hash = arr.reduce({}, &:merge)
puts combined_hash.to_json
# => {"a":"test a","b":"test b updated"}

您可以在此处看到它:http://ideone.com/l5BAiw

答案 1 :(得分:0)

您需要使用以下内容:

json = JSON.parse(value).to_s
另外添加

to_s以将其转换为字符串。