迭代Ruby中的哈希数组(解析的JSON)

Lei*_*ana 1 ruby arrays each json object

我有一个哈希值,它是在进行API调用并通过JSON.parse运行时创建的:

{
  "results": [
    {
      "zip": "08225",
      "city": "Northfield",
      "county": "Atlantic",
      "state": "NJ",
      "distance": "0.0"
    },
    {
      "zip": "08221",
      "city": "Linwood",
      "county": "Atlantic",
      "state": "NJ",
      "distance": "1.8"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我试图从每个对象中获取所有的zipcodes并将它们放入一个数组中:

zipcode_array = Array.new
Run Code Online (Sandbox Code Playgroud)

我试过以下代码:

locations.each do |zipcode|
    zipcode_array.push(['results'][i]['zip'])
end
Run Code Online (Sandbox Code Playgroud)

我想我的最终输出是:

zipcode_array = ["08225", "08221"]
Run Code Online (Sandbox Code Playgroud)

任何人都有关于我失踪的提示吗?

Igo*_*dov 5

你的代码似乎缺少i变量(索引),但实际上你并不需要它,因为你总是可以使用map函数来实现惯用的Ruby代码:

require "json"

response = '{
  "results": [
    {
      "zip": "08225",
      "city": "Northfield",
      "county": "Atlantic",
      "state": "NJ",
      "distance": "0.0"
    },
    {
      "zip": "08221",
      "city": "Linwood",
      "county": "Atlantic",
      "state": "NJ",
      "distance": "1.8"
    }
  ]
}'

parsed_response = JSON.parse(response)
zipcode_array = parsed_response["results"].map { |address| address["zip"] }
Run Code Online (Sandbox Code Playgroud)