在Rails中使用`JSON.decode`的结果

时间:2012-01-14 20:20:13

标签: ruby-on-rails ruby json get

所以我在我的控制器中有一个动作{} {}为API:

get_response

好的但是现在我想要获取信息,用它来创建另一个对象,但我甚至无法格式化我得到的信息,任何人都可以告诉我我做错了什么,我错过了什么?

我希望能够访问 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 中的信息... 谢谢。

这是JSON结构

get_response

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

1 个答案:

答案 0 :(得分: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