在Rails 3中从JSON响应中获取数据



所以我试图把推特推文放到rails应用程序(注意,因为这是一个任务,我不能使用Twitter Gem),我很困惑。我可以得到我需要的一个JSON字符串的形式的推文,但我不知道从哪里去那里。我知道我正在做的推特API调用返回一个JSON数组与一堆推特对象,但我不知道如何获得推特对象。我尝试了JSON。解析,但仍然无法获得所需的数据(我不确定返回什么)。这是我到目前为止的代码,我已经很清楚地说明了我正在尝试的注释/字符串。我是Rails的新手,所以这可能是我想要做的事情。

def get_tweets
require 'net/http'
uri = URI("http://search.twitter.com/search.json?q=%23bieber&src=typd")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
case response
when Net::HTTPSuccess then #to get: text -> "text", date: "created_at", tweeted by: "from_user", profile img url: "profile_img_url"
  JSON.parse(response.body)
  # Here I need to loop through the JSON array and make n tweet objects with the indicated fields
  t = Tweet.new(:name => "JSON array item i with field from_user",  :text  "JSON array item i with field text", :date => "as before" ) 
  t.save
when Net::HTTPRedirection then
  location = response['location']
  warn "redirected to #{location}"
  fetch(location, limit - 1)
else
  response.value
end
end

谢谢!

JSON。方法返回表示json对象的ruby散列或数组。在你的情况下,Json被解析为哈希,与"结果"键(里面你有你的推文),和一些元数据:"max_id","since_id","refresh_url"等。有关返回字段的描述,请参阅twitter文档。所以在你的例子中它会是:

  parsed_response = JSON.parse(response.body)
  parsed_response["results"].each do |tweet|
    t = Tweet.new(:name => tweet["from_user_name"], :text => tweet["text"], :date => tweet["created_at"]) 
    t.save
  end

相关内容

  • 没有找到相关文章

最新更新