You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby中遍历JSON解析后的哈希数组提取邮政编码

正确提取邮政编码的实现方法

嘿,我来帮你搞定这个提取邮政编码的问题!首先咱们先理清楚你拿到的数据结构:你通过API获取并解析后得到的是一个哈希,里面的"results"对应的值才是咱们要遍历的、包含邮政编码的数组。你之前的代码没成功大概率是没正确定位到这个数组,或者遍历的时候键名用错了。

下面是正确的实现代码:

# 假设解析后的API数据存在这个变量里
response_data = {"results": [{"zip": "08225", "city": "Northfield", "county": "Atlantic", "state": "NJ", "distance": "0.0"}, {"zip": "08221", "city": "Linwood", "county": "Atlantic", "state": "NJ", "distance": "1.8"}]}

# 初始化空数组
zipcode_array = Array.new

# 遍历results数组里的每个location对象,提取zip值
response_data["results"].each do |location|
  zipcode_array.push(location["zip"])
end

# 验证结果
puts zipcode_array
# 输出会是 ["08225", "08221"]

如果想更简洁,也可以用Ruby的map方法一步完成,代码更优雅:

zipcode_array = response_data["results"].map { |location| location["zip"] }

关键注意点:

  • 你解析后的顶层数据是哈希,必须先通过"results"键拿到里面的数组,才能遍历每个包含邮政编码的对象;
  • 每个对象里的邮政编码键是"zip"(字符串键,因为JSON解析后默认是字符串键,如果你的代码里用了symbol键比如:zip,那也得对应上,不过通常JSON.parse出来是字符串键);
  • 之前你写的zipcode_array.push(['...'])肯定不对,这里要传入的是每个location对应的zip值,而不是一个数组或者占位符。

内容的提问来源于stack exchange,提问作者Leia_Organa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:51:16