2012-01-14 47 views
2

所以,我有我的控制器,做了get_response到API的行動:Rails中使用JSON.decode`的`結果

def memeapi 
    require "net/http" 
    require "uri" 

    @meme = Meme.new(params[:meme]) 

    url = "http://version1.api.memegenerator.net/Instance_Create?username=apigen&password=SECRET&languageCode=en&generatorID=#{@meme.memeid}&imageID=#{@meme.imgid}&text0=#{@meme.text0}&text1=#{@meme.text1}" 
    resp = Net::HTTP.get_response(URI.parse(url)) 
    data = resp.body 
    # I want to convert it to the Rails data structure - a hash 
    result = ActiveSupport::JSON.decode(data) 


    end 

好了,但現在我想回去的信息,用它來創建另一個對象,但我甚至不能格式化我得到的信息,任何人都可以告訴我我做錯了什麼,我錯過了什麼?

我希望能夠從get_response訪問信息... 謝謝。

這是JSON結構

{"success":true,"result":{"generatorID":45,"displayName":"Insanity Wolf","urlName":"Insanity-Wolf","totalVotesScore":0,"imageUrl":"/cache/images/400x/0/0/20.jpg","instanceID":13226270,"text0":"push","text1":null,"instanceImageUrl":"/cache/instances/400x/12/12916/13226270.jpg","instanceUrl":"http://memegenerator.net/instance/13226270"}} 

我不想保存BTW所有字段...

+0

JSON是什麼樣的?另外,解碼之後可能在'result'中保存的「東西」有什麼問題? – 2012-01-14 20:28:25

+0

我編輯的問題與JSON結構,問題是,我什至不能看到的內容,我敢肯定的問題是,我不知道如何處理數據... T – 2012-01-14 20:31:35

+0

你想要做什麼與數據? – 2012-01-14 20:34:03

回答

6

result會是這個樣子在你的代碼JSON.decode後。

{ 
    'success' => true, 
    'result' => { 
    "generatorID"  => 45, 
    "displayName"  => "Insanity Wolf", 
    "urlName"   => "Insanity-Wolf", 
    "totalVotesScore" => 0, 
    "imageUrl"   => "/cache/images/400x/0/0/20.jpg", 
    "instanceID"  => 13226270, 
    "text0"   => "push", 
    "text1"   => nil, 
    "instanceImageUrl" => "/cache/instances/400x/12/12916/13226270.jpg", 
    "instanceUrl"  => "http://memegenerator.net/instance/13226270" 
    } 
} 

你有一個嵌套的散列(哈希作爲哈希的一部分),在這裏,你可以像這樣訪問:

image_url = result['result']['imageUrl'] # => "/cache/images/400x/0/0/20.jpg" 

你真的想用這些信息做什麼,我無法猜測。也許你想更新你創建的Meme對象?

@meme.url = image_url 
+0

這正是我沒有得到非常感謝的地方。傑傑你搖滾人。 – 2012-01-14 20:46:23

+0

@Mau:很高興我可以幫助:) – 2012-01-14 20:46:47

+0

對於濫用行爲的人很抱歉,但您知道任何方式我可以格式化一個變量以刪除空格並將其替換爲「%20」,以便它可以是URL友好的? – 2012-01-14 20:55:47