0

这是我的问题,我从请求中获取一个变量并将其存储在@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

但我无法获得电子邮件或名字等内部属性,我如何访问这些属性???

4

1 回答 1

3

@response是 的一个实例Hashie::Mash,而@response.results是 的一个实例Array,因此您需要访问您希望接收结果的数组的索引。

@response.results[0].firstName
@response.results[0].contact.email

将分别返回第一个结果的firstNameemail。您可以使用

@response.results.each do |result|
  result.firstName
  result.contact.email
end

如果总是只有一个result,您也可以使用 Ruby 的.first方法访问它

@response.results.first.email
# ...
于 2012-07-25T03:48:04.340 回答