2017-04-19 20 views
0

我有一個JSONObject#1,如:如何在Java中合併兩個`JSONObject`s?

"data":{ 
    "data_0":{"name": "Name 0"}, 
    "data_1":{"name": "Name 1"} 
} 

而且JSONObject#2,如:

{"data_2":{"name": "Name 2"}} 

如何合併這兩個JSONObject s到得到以下結果:

"data":{ 
    "data_0":{"name": "Name 0"}, 
    "data_1":{"name": "Name 1"}, 
    "data_2":{"name": "Name 2"} 
} 

+0

@ user7790438我認爲它沒有類似的目的。因爲我想合併2 jsonobject相同的鍵是**數據**。我曾看過那篇文章,但我無法解決我的問題。 –

回答

0

我使用谷歌GSON庫行家:

<dependency> 
      <groupId>com.google.code.gson</groupId> 
      <artifactId>gson</artifactId> 
      <version>2.8.0</version> 
     </dependency> 

試試這個代碼:

public static void main(String[] args) { 
     String json1 = "{\"data\":\r\n{" + " \"data_0\":{\"name\": \"Name 0\"},\r\n" 
       + " \"data_1\":{\"name\": \"Name 1\"}\r\n" + "}}"; 
     String json2 = "{\"data_2\":{\"name\": \"Name 2\"}}\r\n" + ""; 
     Map firstObject = new Gson().fromJson(json1, HashMap.class); 
     Map secondObject = new Gson().fromJson(json2, HashMap.class); 

     firstObject.putAll(secondObject); 

     String resultJson = new Gson().toJson(firstObject); 
     System.out.println(resultJson); 
    } 

打印:

{"data":{"data_0":{"name":"Name 0"},"data_1":{"name":"Name 1"}},"data_2":{"name":"Name 2"}} 
+0

我確實相信OP要求'org.json.JSONObject',而不是Gson,但是這裏有一些關於Gson的註釋:1)你不必創建多個'Gson'實例。 2)泛型是你的朋友。 3)你可以使用像Map.class這樣不太嚴格的類型,不一定是'HashMap.class' - 在第一種情況下你會得到預測順序圖,因爲Gson使用內部鏈接哈希映射實現。 –