0

これが私の問題です。リクエストから変数を取得し、@responseに保存します。

次に、応答をデバッグし、debug(@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

最初の結果のfirstNameとの値をそれぞれ返します。email応答をループすることができます(複数ある場合はすべての結果を取得するため

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

常に1つしかない場合は、Rubyの方法resultでこれにアクセスすることもできます.first

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