Search code examples
javajsonmavenjson-simple

Not able to build a JSON object correctly using JSONObject


I have the following program which is building the JSON object. Not sure how to build array of arrays using following program.

pom.xml

<dependency>
    <groupId>com.googlecode.json-simple</groupId>
    <artifactId>json-simple</artifactId>
    <version>1.1.1</version>
</dependency>

JsonObjectConverter.java

public class JsonObjectConverter {

    private static final String STORE_ID = "TMSUS";

    public static void main(String[] args) {
        System.out.println(print1());
    }

    private static String print1() {
        JSONObject body = new JSONObject();

        JSONArray events1 = new JSONArray();
        events1.add(100L);
        events1.add(200L);
        JSONArray events2 = new JSONArray();
        events2.add(300L);
        events2.add(400L);

        JSONArray eventLogs = new JSONArray();
        eventLogs.add(events1);
        eventLogs.add(events2);

        body.put("storeId", STORE_ID);
        body.put("eventLogs", eventLogs);

        return body.toString();
    }

}

Output with the current program:

{
  "eventLogs": [
    [
      100,
      200
    ],
    [
      300,
      400
    ]
  ],
  "storeId": "TMSUS"
}

Expected Output:

{
  "eventLogs": [
    {
      "storeId": "TMSUS",
      "eventIds": [
        100,
        200
      ]
    },
    {
      "storeId": "TMSCA",
      "eventIds": [
        300,
        400
      ]
    }
  ],
  "userName": "meOnly"
}

Not sure how to get the expected output.

Please guide.


Solution

  • Never mind, I got it working. Here is the updated method.

     private static String print1() {
            JSONObject body = new JSONObject();
    
            JSONObject eventLog1 = new JSONObject();
            JSONArray events1 = new JSONArray();
            events1.add(100L);
            events1.add(200L);
            eventLog1.put("storeId", "TMSUS");
            eventLog1.put("eventIds", events1);
    
            JSONObject eventLog2 = new JSONObject();
            JSONArray events2 = new JSONArray();
            events2.add(300L);
            events2.add(400L);
            eventLog2.put("storeId", "CBKUS");
            eventLog2.put("eventIds", events2);
    
            JSONArray eventLogs = new JSONArray();
            eventLogs.add(eventLog1);
            eventLogs.add(eventLog2);
    
            body.put("eventLogs", eventLogs);
            body.put("userName", "customer-portal-user");
    
            return body.toString();
        }