2017-10-16 12 views
0

、私はこれらの2 JSONは私が外オブジェクト名に1つのマッチングに2 JSONObjectをマージし、この結果を得るにはどうすればよい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"}] } 
      ] 

オブジェクトがありますか?

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

私は最終的に角度2のツリーノードを使って私の角度のウェブサイトに実装するjavaでこれをやっています。 – 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

これはありません一致する名前のオブジェクトをマージするのではなく、配列をすべてまとめて追加するだけです。 –

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にマージするにはどうすればよいのでしょうか?私が間違っている? –

関連する問題