2017-04-19 133 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使用内部链接哈希映射实现。 –