【问题标题】:How do I extract a value from this Ruby hash?如何从此 Ruby 哈希中提取值?
【发布时间】:2012-08-03 23:53:50
【问题描述】:

我正在使用 Foursquare API,我想从这个哈希中提取“id”值

[{"id"=>"4fe89779e4b09fd3748d3c5a", "name"=>"Hitcrowd", "contact"=>{"phone"=>"8662012805", "formattedPhone"=>"(866) 201-2805", "twitter"=>"hitcrowd"}, "location"=>{"address"=>"1275 Glenlivet Drive", "crossStreet"=>"Route 100", "lat"=>40.59089895083072, "lng"=>-75.6291255071468, "postalCode"=>"18106", "city"=>"Allentown", "state"=>"Pa", "country"=>"United States", "cc"=>"US"}, "categories"=>[{"id"=>"4bf58dd8d48988d125941735", "name"=>"Tech Startup", "pluralName"=>"Tech Startups", "shortName"=>"Tech Startup", "icon"=>"https://foursquare.com/img/categories/shops/technology.png", "parents"=>["Professional & Other Places", "Offices"], "primary"=>true}], "verified"=>true, "stats"=>{"checkinsCount"=>86, "usersCount"=>4, "tipCount"=>0}, "url"=>"http://www.hitcrowd.com", "likes"=>{"count"=>0, "groups"=>[]}, "beenHere"=>{"count"=>0}, "storeId"=>""}] 

当我尝试使用['id'] 提取它时,我收到此错误can't convert Symbol into Integer。如何使用 ruby​​ 提取值?另外,对于每次提取“id”值的多个哈希,我该怎么做?

请原谅我的经验不足。谢谢!

【问题讨论】:

  • 看起来这是一个有一个值的数组,一个哈希值。 yourobject.first['id'] 有效吗?

标签: ruby json api parsing hash


【解决方案1】:

它被包裹在一个数组中,这就是[] 在开始和结束时的意思。但是看起来这个数组里面只有一个对象,这才是你真正想要的hash。

所以假设你想要这个数组中的第一个对象:

mydata[0]['id'] # or mydata.first['id'] as Factor Mystic suggests

但通常,当 API 返回一个数组时,是有原因的(它可能会返回许多结果,而不仅仅是一个),并且天真地从中提取第一项可能不是您想要的。因此,在将其硬编码到您的应用程序之前,请确保您获得了您真正期望的那种数据。

【讨论】:

  • 这行得通,但是如果我想为多个数组运行这段代码怎么办?
  • 多个数组?还是一个数组中有多个项目?无论哪种方式,循环都很酷,我猜。这是一个模糊的问题。
  • 对不起,我的意思是一个数组中有多个项目。很抱歉有歧义。
【解决方案2】:

对于多个哈希,如果你想用 id 做一些事情(运行某种程序)然后

resultsArray.each do |person|
  id = person["id"] #then do something with the id
end

如果你只想获取一个包含id的数组那么

resultsArray.map{|person| person["id"]}  
# ["4fe89779e4b09fd3748d3c5a", "5df890079e4b09fd3748d3c5a"]

要从数组中抓取一项,请参阅Alex Wayne 的答案

【讨论】:

  • 第二段代码出现此错误undefined method 'id' for #<Hash:0x1681ab8>
【解决方案3】:

要获取 id 数组,请尝试:resultsArray.map { |result| result["id"] }

【讨论】:

    猜你喜欢
    • 2019-11-21
    • 1970-01-01
    • 2020-07-21
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多