2013-05-09 78 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