3 votes

Comment combiner deux ou plusieurs objets JSON en un seul JSONObject ?

J'ai deux objets JSON comme ci-dessous

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

Je dois les combiner comme {"codes":{"200":"success"},{"401":"not found"}} en utilisant java.

J'ai essayé de 3 façons mais je n'ai pas pu obtenir le résultat souhaité. Pouvez-vous m'aider avec un extrait de code ?

que j'ai essayé comme suit

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

Sortie :

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"}]}

1voto

Karol Dowbecki Points 27852

Votre JSON attendu {"codes":{"200":"success"},{"401":"not found"}} est invalide. Vous pouvez le vérifier avec https://jsonlint.com/ ce qui produira une erreur :

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

Vous voulez probablement un tableau pour regrouper le premier et le deuxième objet, ce qui donne le JSON suivant (remarquez les crochets) [ y ] ) :

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

Cela peut être réalisé avec :

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

0voto

Narasimha Points 31

J'ai enfin trouvé la logique.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X