将标准JSON数组转换为2d数组对象



在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"]] 

最新更新