在ruby中,我如何将这个JSON解析为2d位置数组对象?
我想将它转换为这样的简单对象:
[["Seattle"]["Washington"],["Seaton"]["Illinois"]]
我尝试过一些事情并遇到问题,而且我可以通过Google搜索找到很多这方面的例子。
{
"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
答案 0 :(得分:1)
我会做这样的事情:
require 'json'
JSON.parse(string)['data'].map { |hash| [hash['city'], hash['state']] }
#=> [["Seattle", "Washington"],["Seaton","Illinois"]]
答案 1 :(得分:1)
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"]]