0

I have a JSONObject #1 like:

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

And JSONObject #2 like:

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

How do I merge these two JSONObjects to get the following result:

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

?

Lyubomyr Shaydariv
  • 20,327
  • 12
  • 64
  • 105
Hoc N
  • 143
  • 3
  • 12
  • @user7790438 I think it no similar aim. Because I want to merger 2 jsonobject with same key is **data**. I had saw that post, But I can't solved my problem. – Hoc N Apr 19 '17 at 04:17

1 Answers1

0

I use google gson library in maven:

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

Try this code:

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);
    }

Prints:

{"data":{"data_0":{"name":"Name 0"},"data_1":{"name":"Name 1"}},"data_2":{"name":"Name 2"}}
Jay Smith
  • 2,331
  • 3
  • 16
  • 27
  • 1
    I do believe the OP was asking for `org.json.JSONObject`, not Gson, but here are some comments regarding Gson: 1) You don't have to create multiple `Gson` instance. 2) Generics are your friends. 3) You can use less strict types like `Map.class`, not necessarily `HashMap.class` -- in first case you'll get predicted-order maps because Gson uses internal linked hash map implementation. – Lyubomyr Shaydariv Apr 19 '17 at 06:46