gbd*_*dev 15 ruby ruby-on-rails httparty facebook-graph-api
在我的控制器中,我有以下代码......
response = HTTParty.get('https://graph.facebook.com/zuck')
logger.debug(response.body.id)
我得到一个NoMethodError/undefined方法`id'
如果我做...
logger.debug(response.body)
它按原样输出......
{"id":"4","name":"Mark Zuckerberg","first_name":"Mark","last_name":"Zuckerberg","link":"http:\/\/www.facebook.com\/zuck","username":"zuck","gender":"male","locale":"en_US"}
人们会认为这是response.body.id,但显然这不起作用.提前致谢!
Nia*_*son 35
试试这个:
body = JSON.parse(response.body)
id = body["id"]
对于这种事情,我建议使用a)使用Koala或b)使用httparty创建一个类.然后,您可以设置format: json为自动解析返回的json.看到这里和这里
bon*_*onh 12
您可以强制将响应视为JSON,HTTParty.get如下所示:
response = HTTParty.get("http://itunes.apple.com/search",
    {query: {term: 'tame impala'}, format: :json})
response['results'][0]['trackName']
=> "Let It Happen"
如果response['id']响应Content-Type是application/json或者也是response.parse_response为了获得从JSON有效负载生成的哈希,您可以使用.
response = HTTParty.get('https://graph.facebook.com/zuck')
payload = response.parsed_response
logger.debug(payload['id'])
注:parsed_response是一个Hash,只有在响应Content-Type是application/json,否则HTTParty将返回它作为一个字符串.为了强制执行哈希,如果响应未返回application/json,您可以将其format作为参数传递HTTParty.get(url, format: :json).