2013-05-09 73 views
0

使用Ruby我有一个像Map对象和嵌套对象模型on Rails的

{"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,访问,FirstSeen,PrevVisited,锚,类型,TextPre,TextPost,指数,评级,UrlFrom,IpFrom,标题,LinksInternal,LinksExternal,大小

我明白如何将这个保存到数据库中没有这个bit below ...

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

不知道如何用嵌套对象保存它。

我对谷歌搜索和SO,但没有找到任何东西,什么是做这种正确的方法是什么?我应该将嵌套对象成以上的人吗?我没有必要为它被嵌套...

在此先感谢

+0

基于上述JSON,你可能会被发送的多个链路(它是一个数组)。在这种情况下,你想要做什么? – 2013-05-09 19:51:20

+0

由于某种原因json来自API的API永远不会给出多个链接,只是多个结果 – 2013-05-09 20:02:12

回答

0

它看起来像你想保存的链接,所以我/在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"=>""}]} 
+0

我想要所有的数据,所以也许最好是让它像 {“Result”:[{“0121” “http://www.example.com/”,等等, “访问”:1364927598, “FirstSeen”:1352031217, “PrevVisited”:1362627231, “锚”: “example.com”, “类型” : “文本”, “标记”:[], “TextPre”: “”, “TextPost”: “”, “索引”:0, “评分”:0.001416, “UrlFrom”:“HTTP ://www.exampletwo.com”, “IpFrom”: “112.213.89.105”, “标题”: “实施例标题”, “LinksInternal”:91, “LinksExternal”:51, “大小”:5735 }]} ,只是举数组放入上面的那个? – 2013-05-09 21:18:33

+0

你需要或者压扁到这个简单的哈希,或有两个对象(一个链接孩子造成),或存储JSON,而不是列。这一切都取决于你想如何存储数据。你应该从那里开始。 – 2013-05-09 21:26:12

+0

感谢您的帮助 – 2013-05-10 14:20:11