在ruby中,如何将此JSON解析为2d位置数组对象?
我想把它转换成这样一个简单的对象:
[["Seattle"]["Washington"],["Seaton"]["Illinois"]]
我尝试了一些东西,但遇到了麻烦,通过谷歌搜索,我找不到太多这样的例子。
{
"data": [
{
"city": "Seattle",
"state": "Washington",
"zip": "98104",
"country": "US",
"empty": false,
"county": null
},
{
"city": "Seaton",
"state": "Illinois",
"zip": "61476",
"country": "US",
"empty": false,
"county": null
}
]
}
以下是我到目前为止尝试的内容(这并没有让我完全达到目的):
require 'rubygems'
require 'json'
...
parsed = JSON.parse(string)
parsed["data"].each do |location|
unless location["city"].nil?
location.each do |location_item|
puts location_item.inspect
end
end
end
我会这样做:
require 'json'
JSON.parse(string)['data'].map { |hash| [hash['city'], hash['state']] }
#=> [["Seattle", "Washington"],["Seaton","Illinois"]]
require 'json'
根据您的要求,
JSON.parse(str)["data"].flat_map { |h| h.values_at("city", "state") }
#=> ["Seattle", "Washington", "Seaton", "Illinois"]
or
JSON.parse(str)["data"].map { |h| h.values_at("city", "state") }
#=> [["Seattle", "Washington"], ["Seaton", "Illinois"]]