Ruby on rails 使用RubyonRails将对象和嵌套对象映射到模型

Ruby on rails 使用RubyonRails将对象和嵌套对象映射到模型,ruby-on-rails,json,activerecord,Ruby On Rails,Json,Activerecord,我有一个像 {"Result":[{ "Links":[{ "UrlTo":"http://www.example.com/", "Visited":1364927598, "FirstSeen":1352031217, "PrevVisited":1362627231, "Anchor":"example.com", "Type":"Text"

我有一个像

{"Result":[{
    "Links":[{
            "UrlTo":"http://www.example.com/",
            "Visited":1364927598,
            "FirstSeen":1352031217,
            "PrevVisited":1362627231,
            "Anchor":"example.com",
            "Type":"Text",
            "Flag":[],
            "TextPre":"",
            "TextPost":""
        }],
    "Index":0,
    "Rating":0.001416,
    "UrlFrom":"http://www.exampletwo.com",
    "IpFrom":"112.213.89.105",
    "Title":"Example title",
    "LinksInternal":91,
    "LinksExternal":51,
    "Size":5735
}]}
我有一个带所有钥匙的模型

UrlTo、已访问、首次访问、已访问、锚定、类型、TextPre、TextPost、索引、评级、URLROM、IpFrom、标题、链接内部、链接外部、大小

我知道如何将其保存到数据库中,而不使用下面的内容

"Links":[{
            "UrlTo":"http://example.com/",
            "Visited":1364927598,
            "FirstSeen":1352031217,
            "PrevVisited":1362627231,
            "Anchor":"example.com",
            "Type":"Text",
            "Flag":[],
            "TextPre":"",
            "TextPost":""
        }],
也不知道如何将其与嵌套对象一起保存

我在谷歌上搜索过,所以什么也找不到,正确的方法是什么?我应该将嵌套对象移动到上面的对象中吗?我不需要嵌套它


提前感谢

看起来您想要保存链接,因此我将循环提供的json中的结果/链接,并基于链接创建一个新的哈希

我在下面假装您的json在一个名为input.json的文件中,但您显然只需要解析文本或使用现有的json对象

require 'json'
json = JSON.parse File.read("input.json")

links = json["Result"].map do |result|
  result["Links"].map {|link| link }
end.flatten

hash = {"Links" => links}
puts hash
这将创建对象:

{"Links"=>[{"UrlTo"=>"http://www.example.com/", "Visited"=>1364927598, "FirstSeen"=>1352031217, "PrevVisited"=>1362627231, "Anchor"=>"example.com", "Type"=>"Text", "Flag"=>[], "TextPre"=>"", "TextPost"=>""}]}

基于上面的json,可以向您发送多个链接(它是一个数组)。在这种情况下,您想做什么?json所来自的API出于某种原因从不提供多个链接,只提供多个结果我想要所有数据,所以最好像{“Result”:[{“UrlTo”:“,”“visted”:1364927598,“FirstSeen”:1352031217,“prevvisted”:1362627231,“Anchor”:“example.com”,“类型”:“文本”,“标志”:[],“TextPre”:“TextPost”:“索引”:0,“评级”:0.001416,“URLFORM”:“IpFrom”:“112.213.89.105”,“标题”:“示例标题”,“链接内部”:91,“链接外部”:51,“大小”:5735}]只需将数组移到上面的数组中即可?您需要将其展平为一个简单的散列,或者有两个对象(结果带有一个链接子对象),或者存储JSON而不是列。这完全取决于您希望如何存储数据。你应该从这里开始。@MaxRose Collins当然可以——如果你觉得我帮了你,请记下这是正确的答案。