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
相关产品推荐
相关产品推荐

