2017-05-23 55 views
0

我有一個關於如何將多個JSON合併到一個基於同一個鍵的問題。關鍵是第一指數。如何在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\"]]\"}"; 

結合串A,B,C爲1象下面這樣:

{ 
"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

迭代中,而在未 空直到&除非所有3地圖的條件循環。然後把他們的關鍵值放在第四張地圖中。同時你需要刪除你放入第四張地圖的特定條目。

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