2013-01-20 104 views
2

因此,我試圖將Twitter中的推文置於Rails應用程序中(請注意,因爲這是一項我不能使用Twitter Gem的作業),而且我很漂亮困惑。 我可以用JSON字符串的形式得到我需要的推文,但我不知道該從哪裏去。我知道我做的Twitter API調用返回一個帶有一堆Tweet對象的JSON數組,但我不知道如何獲取tweet對象。我試過JSON.parse,但仍然無法獲取所需的數據(我不確定返回的是什麼)。這是我迄今爲止的代碼,我已經用評論/字符串將我想要的代碼做得很清楚。我對Rails超級新,所以這可能是我想要做的。從Rails 3中的JSON響應中獲取數據

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 

謝謝!

回答

6

JSON.parse方法返回代表json對象的ruby hash或數組。 在你的情況下,Json被解析爲一個散列,帶有「結果」鍵(裏面有你的推文)和一些元數據:「max_id」,「since_id」,「refresh_url」等。有關返回字段的說明文檔。 再舉一個例子:

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