【问题标题】:JSON to Ruby on Rails Create ActionJSON 到 Ruby on Rails 创建操作
【发布时间】:2014-07-20 00:19:28
【问题描述】:

我正在使用电影 API,大部分情况下我使用 gem,但为了获取某些信息,我必须使用 RestClient.get 方法。

response = RestClient.get "http://api.themoviedb.org/3/movie/8699/keywords", headers
puts response

如果我运行这段代码,它会返回这个 JSON“提取”

{"id":8699,"keywords":[{"id":917,"name":"journalism"},{"id":4411,"name":"sexism"},{"id":6198,"name":"ladder"},{"id":8531,"name":"panda"},{"id":18290,"name":"1970s"},{"id":18298,"name":"tv show in film"},{"id":41390,"name":"mustache"},{"id":165288,"name":"misogynist"},{"id":167241,"name":"newsroom"},{"id":167250,"name":"teleprompter"},{"id":167252,"name":"what happened to epilogue"},{"id":167254,"name":"gang warfare"},{"id":167256,"name":"multiple cameos"},{"id":179430,"name":"aftercreditsstinger"},{"id":179431,"name":"duringcreditsstinger"},{"id":185281,"name":"news spoof"}]}

现在我需要做的就是将上面的代码转换成 Rails 可读的代码,然后我可以把它放到数据库中。

更具体地说,我想获取上述信息并能够执行它

keywords.each do |keyword| 
 Keyword.create(name: keyword.name, tmdbid: keyword.id)
end

这样它就会根据每个关键字创建一个新的关键字,并根据 JSON 文件创建一个新的关键字和它的名称和 ID

【问题讨论】:

    标签: ruby-on-rails ruby json api rest


    【解决方案1】:

    你可以使用JSON.parse把它变成一个哈希

    keywords = JSON.parse(response)["keywords"]
    

    【讨论】:

    • 感谢您的回复。我跑了response = RestClient.get "http://api.themoviedb.org/3/movie/8699/keywords", headerskeywords = JSON.parse(response)["keywords"]keywords.each do |keyword|Keyword.create(name: keyword.name, tmdbid: keyword.id) end,得到错误NoMethodError: undefined method name for {"id"=>917, "name"=>"journalism"}:Hash
    • keywords 是一个 Hash 对象数组,因此您需要像这样使用它。关键字["name"] 和关键字["id"] 应该可以工作。
    • 那么,keywords.each do |keyword| Keyword.create(name: keyword["name"], tmdbid: keyword["id"]) end ??
    【解决方案2】:

    如果您通过首先创建要保存的正确值数组来一次创建所有关键字会更快。这就是我要做的事情

    keywords = JSON.parse(response)["keywords"].map do |k|
        { name: k["name"], tmdbid: k["id"] }
    end
    
    Keyword.create(keywords) #one SQL statement only
    

    问候

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-24
      • 1970-01-01
      • 2012-10-28
      • 1970-01-01
      • 1970-01-01
      • 2011-07-11
      相关资源
      最近更新 更多