所以我在我的控制器中有一个动作{} {}为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 ...
答案 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