我正在学习正在进行的项目的Twitter搜索API。我可以连接并收到“200”响应。以下代码:
require 'rubygems'
require 'oauth'
require 'json'
=begin
__code for oauth and creating response__
=end
def print_results(tweets)
tweets.each do |tweet|
puts tweet
end
end
if response.code == '200' then
tweets = JSON.parse(response.body)
print_results(tweets)
end
将此结果打印到屏幕上:
statuses
{"metadata"=>{"result_type"=>"recent", "iso_language_code"=>"es"}, "created_at"=>"Mon Dec 02 11:10:53 +0000 2013", "id"=>407466896939044864, "id_str"=>"407466896939044864", "text"=>"Y \"Thérèse\" me recordó sobremanera a \"Madame Bovary\". A mi parecer ambas igual de insulsas.", "source"=>"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android</a>", "truncated"=>false, "in_reply_to_status_id"=>nil, "in_reply_to_status_id_str"=>nil, "in_reply_to_user_id"=>nil, "in_reply_to_user_id_str"=>nil, "in_reply_to_screen_name"=>nil, "user"=>{"id"=>159480381, "id_str"=>"159480381", "name"=>"our last autumn", "screen_name"=>"RoxyVarlow", "location"=>"Valencia", "description"=>"Perdóname por lo que pueda hacer cuando no te recuerde.", "url"=>"http://t.co/AjyasSdTXb", ......
但是当我尝试使用JSON解析它时,并提取twit的文本,或者使用:
def print_results(tweets)
tweets.each do |tweet|
puts tweet['statuses'][0]['text']
end
end
或者用:
puts tweet['text']
我收到错误:
rb:17:in `[]': no implicit conversion of String into Integer (TypeError)
我做错了什么?我该如何从响应中提取推文的文本?
答案 0 :(得分:2)
此代码解决了我的问题:
if response.code == '200' then
result = JSON.parse(response.body)
result['statuses'].each do |result|
puts result
puts "#{result['user']['screen_name']} : #{result['text']}"
end
似乎response.body包含在“状态”中,所以我需要遍历每个状态成员才能访问推文信息。