3

I've two JSON Objects as below

firstJSON: {"200":"success"} 
secondJSON: {"401":"not found"}

I need to combine them as {"codes":{"200":"success"},{"401":"not found"}} using java.

I tried in 3 ways but couldn't achieve the desired output. Could you please help with code snippet?

code which I've tried as below

JSONObject firstJSON = new JSONObject();
firstJSON.put("200", "success");
String firstJSONStr = firstJSON.toString();
System.out.println("firstJSONStr--> " + firstJSONStr);

JSONObject secondJSON = new JSONObject();
secondJSON.put("401", "not found");
String secondJSONStr = secondJSON.toString();
System.out.println("secondJSONStr--> "+secondJSONStr);

String finalJSONStr = firstJSONStr + "," + secondJSONStr;
JSONObject finalJSON1 = new JSONObject();
finalJSON1.put("codes", new JSONObject(finalJSONStr));
System.out.println("finalJSON1--> " + finalJSON1.toString());

JSONObject finalJSON2 = new JSONObject();
finalJSON2.put("codes", finalJSONStr);
System.out.println("finalJSON2--> " + finalJSON2.toString());

JSONObject finalJSON3 = new JSONObject();
ArrayList<JSONObject> jsonArray = new ArrayList<JSONObject>();
jsonArray.add(firstJSON);
jsonArray.add(secondJSON);
finalJSON3.put("codes", jsonArray);
System.out.println("finalJSON3--> " + finalJSON3.toString());

Output:

firstJSONStr--> {"200":"success"}
secondJSONStr--> {"401":"not found"}
finalJSON1--> {"codes":{"200":"success"}}
finalJSON2--> {"codes":"{\"200\":\"success\"},{\"401\":\"not found\"}"}
finalJSON3--> {"codes":[{"200":"success"},{"401":"not found"}]}
9
  • this might be helpful stackoverflow.com/questions/20346790/… Commented Jan 2, 2019 at 10:35
  • Note that your desired output is not valid JSON Commented Jan 2, 2019 at 10:35
  • 1
    I think the reason you are finding it difficult to get the json you require is because it simply isn't valid json: {"codes":{"200":"success"},{"401":"not found"}}. Here you have codes object {"200":"success"} and then an anonymous object {"401":"not found"} Commented Jan 2, 2019 at 10:35
  • hi folks, desired json which I'm trying to generate will be valid one Commented Jan 2, 2019 at 11:09
  • @Narasimha {"codes":{"200":"success"},{"401":"not found"}} Is it valid JSON ? Commented Jan 2, 2019 at 11:25

2 Answers 2

1

Your expected JSON {"codes":{"200":"success"},{"401":"not found"}} is invalid. You can verify it with https://jsonlint.com/ which will produce an error:

Error: Parse error on line 4:
...00": "success"   },  {       "401": "not foun
---------------------^
Expecting 'STRING', got '{'

You most likely want an array to group the first and second object which results in below JSON (do notice the square brackets [ and ]):

{"codes":[{"200":"success"},{"401":"not found"}]}

This can be achieved with:

JSONObject first = new JSONObject();
first.put("200", "success");

JSONObject second = new JSONObject();
second.put("401", "not found");

JSONArray codes = new JSONArray();
codes.put(first);
codes.put(second);

JSONObject root = new JSONObject();
root.put("codes", codes);

System.out.println(root);
Sign up to request clarification or add additional context in comments.

1 Comment

@Narasimha your desired output is not a valid JSON. You can craft it manually using StringBuilder but no sane JSON library will let you create {"codes":{"200":"success"},{"401":"not found"}}
0

Got the logic finally.

            JSONObject successJSON = new JSONObject();
            successJSON.put("description", "success");

            JSONObject scJSON = new JSONObject();
            scJSON.put("200", successJSON);



            JSONObject failJSON = new JSONObject();
            failJSON.put("description","failure");


            scJSON.put("401", failJSON);


            JSONObject finalJSON = new JSONObject();
            finalJSON.put("codes", scJSON);

            System.out.println("finalJSON --> "+finalJSON.toString());

1 Comment

output: finalJSON --> {"codes":{"200":{"description":"success"},"401":{"description":"failure"}}}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.