如何解析rails中jsonArray格式的字符串(而不是json对象)?

如何解析rails中jsonArray格式的字符串(而不是json对象)?,json,ruby-on-rails-4,Json,Ruby On Rails 4,这是我的JSON数组的值字符串形式(不是JSON对象) 当我尝试使用 value=value.to_json #value= "\"[{\\\"a\\\":\\\"test a\\\"},{\\\"b\\\":\\\"test b updated\\\"}]\"" 但我希望我的价值像这样 {"a":"test a","b":"test b updated"} 有什么建议吗?您需要使用以下内容: json = JSON.parse(value).to_s 添加to_s以将其转换为字符串。首先

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

当我尝试使用

value=value.to_json
#value= "\"[{\\\"a\\\":\\\"test a\\\"},{\\\"b\\\":\\\"test b updated\\\"}]\""
但我希望我的价值像这样

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

有什么建议吗?

您需要使用以下内容:

json = JSON.parse(value).to_s

添加to_s以将其转换为字符串。

首先需要将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"}

你可以在这里看到它的作用:

在哪一步中我需要使用它。仅供参考,在第一步中,值是json数组形式的字符串(实际上不是json数组)。我需要的最终答案是json not String。非常感谢Jordan。你救了我一天。现在,如果我能够:):)的话,我愿意为你的答案投票100次。
arr = JSON.parse(value)
combined_hash = arr.reduce({}, &:merge)
puts combined_hash.to_json
# => {"a":"test a","b":"test b updated"}