Sli*_*k23 16 ruby facebook-graph-api
我正在使用HTTParty来提取Facebook用户的书籍列表,但我在解析响应时遇到问题:
Facebook以这种方式返回数据:
{
"data": [
{
"name": "Title",
"category": "Book",
"id": "21192118877902",
"created_time": "2011-11-11T20:50:47+0000"
},
{
"name": "Title 2",
"category": "Book",
"id": "1886126860176",
"created_time": "2011-11-05T02:35:56+0000"
},
Run Code Online (Sandbox Code Playgroud)
HTTParty将其解析为ruby对象.我尝试过这样的事情(ret响应在哪里)ret.parsed_response并返回数据数组,但实际访问里面的项目会返回一个找不到方法的错误.
这是HTTParty实际返回的示例:
#<HTTParty::Response:0x7fd0d378c188 @parsed_response={"data"=>[{"name"=>"Title", "category"=>"Book", "id"=>"21192111877902", "created_time"=>"2011-11-11T20:50:47+0000"}, {"name"=>"Title 2", "category"=>"Book", "id"=>"1886126860176", "created_time"=>"2011-11-05T02:35:56+0000"}, {"name"=>"Thought Patterns", "category"=>"Book", "id"=>"109129539157186", "created_time"=>"2011-10-27T00:00:16+0000"},
Run Code Online (Sandbox Code Playgroud)
Bre*_*der 34
你有任何抛出错误的代码吗?parsed_responseHTTParty响应中的变量是哈希,而不是数组.它包含一个键"data"(字符串,而不是符号).对于该值"data"在哈希键是散列的数组,所以你会重复这样:
data = ret.parsed_response["data"]
data.each do |item|
puts item["name"]
puts item["category"]
puts item["id"]
# etc
end
Run Code Online (Sandbox Code Playgroud)
Sac*_*hin 14
只是一个额外的信息 - 它并不总是一个默认的JSON响应
HTTParty的result.response.body或result.response.parsed_response不不总是有形式哈希
它通常取决于您在请求中使用的标头.例如,您需要在点击GitHub API时指定Accept带有application/json值的标头,否则它只是以字符串形式返回.
然后你必须使用JSON.parse(data)相同的方法将字符串响应转换为Hash对象.
| 归档时间: |
|
| 查看次数: |
32290 次 |
| 最近记录: |