2017-10-16 92 views
0

在例子中,我有這兩個JSON對象如何合併2個JSON對象?

jsonObject1 = [ 
      {"id": "1", "name": "name1", "children": [{"id": "2", "name": "name2"}] }, 
      {"id": "3", "name": "name3", "children": [{"id": "4", "name": "name4"}] } 
      ]; 

jsonObject2 =[ 
      {"id": "4", "name": "name1", "children": [{"id": "6", "name": "name5"}] }, 
      {"id": "5", "name": "name3", "children": [{"id": "7", "name": "name6"}] } 
      ] 

如何合併2的JSONObject到1個匹配的外部對象名稱,並得到這樣的結果?

mergedJsonObject = jsonObject1.merge(jsonObject2); 

mergedJsonObject = [ 
        {"id": "1", "name": "name1", "children": [ 
                  {"id": "2", "name": "name2"}, 
                  {"id": "6", "name": "name5"} 
                  ] 
        }, 
        {"id": "3", "name": "name3", "children": [ 
                  {"id": "4", "name": "name4"}, 
                  {"id": "7", "name": "name6"} 
                  ] 
        } 
        ]; 
+0

是關於Java還是Angular的問題?請包括你的嘗試解決方案 –

+0

我正在做這個在java中,我將最終實現我的角網站使用角2的樹節點。 – Ronaldo

+0

JSON id 5去了哪裏?目前還不清楚你的合併條件是什麼 –

回答

1

由於有問題的對象恰巧是JSONArrays,爲什麼不(僞):

merge (arr1, arr2) { 
    for (int i=0; i < arr2.length, i++) { 
     JSONObject row = arr2.get(i) 
     arr1.add(row) 
    } 
    return arr1 
+0

這doesn不會合並具有匹配名稱的對象,只會將這些數組全部加在一起 –

0

嘗試像下面這樣。

for o1 in jsonObject1 
    for o2 in jsonObject2 
     if o1['name'] == o2['name'] 
      o1['children'].push(o2['children']) 
// inspect jsonObject1 

有可能是一個更好的方式來做到這一點比嵌套循環,但無論

,並確保你不插入陣列到另一個陣列,而是將所有的元素

+0

我沒有downvote(實際上,我upvoted)。但OP沒有明確表示他想要消除重複...然而 - 有趣的解決方案:) – paulsm4

+0

@ paulsm4很確定「我如何將2個JSONObject合併爲1」意味着這一點。我錯了嗎? –