2014-07-07 20 views
-1

我有2個json對象,其中包含數據,我想同時解析它們,這些對象的數據將顯示在表中。我的兩個json都包含不同的數據,但擁有相同的密鑰。下面解析2 json對象,並把它放在​​

Object 1 
    [ 
     {"eventCategory":"Button","totalEvents":11.0}, 
     {"eventCategory":"Contact","totalEvents":787.0}, 
    ] 

Object 2 
    [ 
     {"eventCategory":"Button","totalEvents":253.0}, 
     {"eventCategory":"Contact","totalEvents":512.0}, 
    ] 

而且我想實例顯示此如下

<tr> 
    <td>data from first object- Total events 11 </td> 
    <td>data from second object - Total events 253 </td> 
</tr> 

我怎麼能在Ruby中實現這一目標?我知道我可以將兩個對象分開並創建第三個對象,但是我們有更好的解決方案嗎? 我曾嘗試在一個循環來遍歷兩個對象像下面

JSON.parse(@object1, @object2).each do |data| 

,但沒有成功。任何幫助讚賞。

+1

'[JSON.parse(@ object1),JSON.parse(@對象2)。flatten.each做...' –

+0

@SergioTulentsev扁平化是結合我的兩個對象,但你可以在這兩種看到我的鍵的對象是相同的我怎麼能描述哪個鍵值是哪個對象,如果我通過它循環? –

回答

1

你的問題是什麼?只需迭代json解析之後收到的對象,嘗試調試它,獲取所需的所有信息,然後使用< \ tr>和< \ td>標記在頁面上輸出它。

從Ruby文檔

​​

解析JSON文檔源到一個Ruby數據結構並將其返回。所以你可以發送這個方法只有一個數據參數和選項哈希。所以,是的,你需要將兩個對象包裝在一起然後解析它們。

+0

我無法將兩個對象包裝爲1,因爲我有類似的鍵。我有顯示從值兩個物體如在實施例中說明的以上1​​總對象 - 事件11 ​​2秒對象 - 總事件253 –

+0

然後使用類似 [@ OBJ1,OBJ2]。每個做| OBJ | data = Json.parse(obj) #然後把它或粘貼到模板 – rossmari

+0

你能給我一個這樣的例子。迭代2個對象 –

1
require 'json' 
    data1 = '{ 
     "Object1" :[ 
      {"eventCategory":"Button","totalEvents":11.0}, 
      {"eventCategory":"Contact","totalEvents":787.0} 
     ] 
     }' 
    data2 = '{ 
     "Object2" :[ 
      {"eventCategory":"Button","totalEvents":253.0}, 
      {"eventCategory":"Contact","totalEvents":512.0} 
     ] 
     }' 


    merged_hash = JSON.parse(data1).merge(JSON.parse(data2)) 


    Now parse the merged_hash to get the desired output 

merged_hash.each do |x,y| 
if x == "Object1" 
    y.each do |p,q| 
     puts p["eventCategory"] + ":" + p["totalEvents"].to_s 
    end 
elsif x == "Object2" 
    y.each do |p,q| 
     puts p["eventCategory"] + ":" + p["totalEvents"].to_s 
    end 
end 

end