使用httparty我可以得到以下响应:
puts Representative.find_by_zip(46544).inspect
Run Code Online (Sandbox Code Playgroud)
- >
{"results"=>[{"name"=>"Joe Donnelly", "district"=>"2", "office"=>"1218 Longworth", "phone"=>"(202) 225-3915", "link"=>"http://donnelly.house.gov/", "state"=>"IN"}]
Run Code Online (Sandbox Code Playgroud)
示例来源:http://railstips.org/blog/archives/2008/07/29/it-s-an-httparty-and-everyone-is-invited/
但我无法访问数据,例如:
Representative.find_by_zip(46544).inspect["name"] 回报 nil
如何访问此响应的各个元素?
Object#inspect返回一个字符串,而不是一个哈希.你要这个:
Representative.find_by_zip(46544)['results'][0]['name']
Run Code Online (Sandbox Code Playgroud)
这是正在发生的事情:Representative#find_by_zip只用一个索引返回一个哈希: 'results'.item at 'results'是一个数组,在这种情况下只包含一个元素,因此我们[0]用来获取第一个(也是唯一的)元素.该元素本身是一个具有'name'键的哈希,它指向返回的第一个(也是唯一的)代表的名称.
当你有复杂的哈希和数组时,有时可以用更易读的方式对其进行格式化,以弄清楚如何获得你想要的数据:
{ "results" => [
{ "name" => "Joe Donnelly",
"district" => "2",
"office => "1218 Longworth",
"phone" => "(202) 225-3915",
"link" => "http://donnelly.house.gov/",
"state" => "IN"
}
]
}
Run Code Online (Sandbox Code Playgroud)
这应该让人们更清楚这里的内容是什么.
| 归档时间: |
|
| 查看次数: |
2345 次 |
| 最近记录: |