2017-05-23 9 views
0

同じキーに基づいて複数のJSONを1に結合する方法に問題があります。キーは1番目のインデックスです。Javaで3つ以上のJSONをマージする方法

例:

String data_a = "{\"results\":[[\"1\",\"6000\"],[\"2\",\"5000\"]]\"}"; 
String data_b = "{\"results\":[[\"1\",\"2000\"],[\"3\",\"5000\"]]\"}"; 
String data_c = "{\"results\":[[\"1\",\"3000\"],[\"3\",\"6000\"], 
[\"4\",\"1000\"]]\"}"; 

以下のように1からC、文字列、Bを組み合わせる:

{ 
"results ": [ 
    ["1", "6000", "2000", "3000"], 
    ["2", "5000", "", ""], 
    ["3", "", "5000", "6000"], 
    ["4", "", "", "1000"] 
] 
} 

をここで、私はマップに変換するgsonを使用してみてください。しかし、ルーピングとキーのマッチング方法を混乱させます。

Map firstObject = new Gson().fromJson(data_a, HashMap.class); 
Map secondObject = new Gson().fromJson(data_b, HashMap.class); 
Map thirdObject = new Gson().fromJson(data_c, HashMap.class); 
+0

文字列は中括弧で囲まない限り、有効なJSONではありません。 – shmosel

+0

ありがとう、更新されます – shin88

+0

これは正しくないように見えます - > ["1"、 "6000"、 "2000"、 "3000"] ......あなたは{"1":["6000" 、 "2000"、 "3000"]、......}、 –

答えて

0

whileループで反復空でない 内のすべての3地図ない限り&までの条件に関する。 4番目のマップにキー値を入れます。同時に は、4番目のマップに配置している特定のエントリを削除する必要があります。

while(!H1.isEmpty() && !H2.isEmpty() && !H2.isEmpty()){ 

H4.put(H*) // H1 key 
H*.remove(...) // H1 key 

} 

あなたもセットに入れマップ&からすべてのキーセットを取得することができます。

Set<int> keys = new Set<int>(); 
    keys.add(h*.keySet()) 

キーを繰り返します。

+0

tq。しかし、我々はどのようにキーに一致する?データa、b、およびcの間。 – shin88

+0

地図からすべてのキーを取得してから、他のマップ – Zigri2612

+0

からこれらのキー値を選択するか、マップマップのキーセットを取得してセットに追加することができます – Zigri2612

関連する問題