我正在使用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"
},
HTTParty把它解析成一个ruby对象,我试过类似这样的方法(ret
是响应)ret.parsed_response
,它返回数据数组,但是实际访问里面的项时,返回一个找不到方法的错误。
下面是HTTTparty实际返回的示例:
#<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"},
2条答案
按热度按时间wtlkbnrh1#
您是否有任何代码抛出错误?HTTParty响应中的
parsed_response
变量是一个散列,而不是数组。它包含一个键"data"
(字符串,而不是符号)。散列中"data"
键的值是一个散列数组,因此您可以按如下方式进行迭代:j5fpnvbx2#
只是一个附加信息-它并不总是默认的JSON响应
HTTParty的
result.response.body
或result.response.parsed_response
不总是具有哈希的形式这通常取决于您在请求中使用的头文件。例如,对于,您需要在点击GitHub API时使用
application/json
值指定Accept
头文件,否则它只会返回string。然后,您必须使用
JSON.parse(data)
for same将字符串响应转换为哈希对象。