首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析HTTParty响应

解析HTTParty响应
EN

Stack Overflow用户
提问于 2011-11-18 01:50:34
回答 2查看 39.7K关注 0票数 22

我正在使用HTTParty拉取一个Facebook用户的图书列表,但我在解析响应时遇到了问题:

Facebook以这种方式返回数据:

代码语言:javascript
复制
{
  "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将其解析成一个拼音对象。我尝试过这样的方法(其中ret是响应) ret.parsed_response,它返回数据数组,但实际访问其中的项时会返回方法未找到错误。

这是HTTParty实际返回的示例:

代码语言:javascript
复制
#<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"}, 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-18 01:54:59

你是否有任何抛出错误的代码?HTTParty响应中的parsed_response变量是一个哈希,而不是一个数组。它包含一个键"data" (字符串,而不是符号)。散列中的"data"键的值是一个散列数组,因此您可以这样迭代:

代码语言:javascript
复制
data = ret.parsed_response["data"]
data.each do |item|
  puts item["name"]
  puts item["category"]
  puts item["id"]
  # etc
end
票数 42
EN

Stack Overflow用户

发布于 2016-05-24 19:19:44

这只是一个额外的信息-它并不总是一个默认的JSON响应

HTTParty的result.response.bodyresult.response.parsed_response是否始终具有散列的形式

这通常取决于您在请求中使用的标头。例如对于,您需要在命中GitHub接口时指定带有application/json值的Accept header,否则它将简单地返回string

然后,您必须使用JSON.parse(data)来将字符串响应转换为Hash对象。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8171881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档