这是我的问题,我从一个请求中获取一个变量,并将其存储在@response中。
然后我调试响应,调试(@response),并获得以下输出:
--- !ruby/hash:Hashie::Mash results: - !ruby/hash:Hashie::Mash id: '33098557' firstName: john lastName: star relationship: self photo: https://foursquare.com/img/blank_boy.png tips: !ruby/hash:Hashie::Mash count: 0 lists: !ruby/hash:Hashie::Mash groups: - !ruby/hash:Hashie::Mash type: created count: 1 items: [] gender: male homeCity: mexico bio: '' contact: !ruby/hash:Hashie::Mash email: jhon@hotmail.com unmatched: !ruby/hash:Hashie::Mash email: []
我可以通过键入@response.results获得结果,并通过以下方式进行调试:
--- - !ruby/hash:Hashie::Mash id: '33098557' firstName: john lastName: star relationship: self photo: https://foursquare.com/img/blank_boy.png tips: !ruby/hash:Hashie::Mash count: 0 lists: !ruby/hash:Hashie::Mash groups: - !ruby/hash:Hashie::Mash type: created count: 1 items: [] gender: male homeCity: mexico bio: '' contact: !ruby/hash:Hashie::Mash email: jhon@hotmail.com
但我无法获取电子邮件或名字等内部属性,我如何访问这些属性???
@response 是的一个实例 Hashie::Mash 虽然 @response.results 是的一个实例 Array ,因此您需要访问要为其接收结果的数组的索引。
@response
Hashie::Mash
@response.results
Array
@response.results[0].firstName @response.results[0].contact.email
将返回的值 firstName 和 email 分别是第一个结果的。您可以循环浏览响应 (如果碰巧有多个结果,则获取所有结果) 具有
firstName
email
@response.results.each do |result| result.firstName result.contact.email end
如果总是只有一个 result 您也可以使用Ruby的 .first 方法
result
.first
@response.results.first.email # ...