2017-10-16 90 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”意味着这一点。我错了吗? –