Comment créer JSONArray correct en Java en utilisant JSONObject


Comment puis-je créer un objet JSON comme le suivant, en Java à l'aide de JSONObject ?

{
    "employees": [
        {"firstName": "John", "lastName": "Doe"}, 
        {"firstName": "Anna", "lastName": "Smith"}, 
        {"firstName": "Peter", "lastName": "Jones"}
    ],
    "manager": [
        {"firstName": "John", "lastName": "Doe"}, 
        {"firstName": "Anna", "lastName": "Smith"}, 
        {"firstName": "Peter", "lastName": "Jones"}
    ]
}

J'ai trouvé beaucoup d'exemples, mais pas ma chaîne exactement JSONArray.

Author: soshial, 2013-09-24

3 answers

Voici du code utilisant java 6 pour vous aider à démarrer:

JSONObject jo = new JSONObject();
jo.put("firstName", "John");
jo.put("lastName", "Doe");

JSONArray ja = new JSONArray();
ja.put(jo);

JSONObject mainObj = new JSONObject();
mainObj.put("employees", ja);

Edit: Depuis il y a eu beaucoup de confusion à propos de put vs add ici, je vais tenter d'expliquer la différence. Dans java 6 org.json.JSONArray contient la méthode put et en java 7 javax.json contient la méthode add.

Un exemple de ceci en utilisant le modèle builder dans java 7 ressemble à ceci:

JsonObject jo = Json.createObjectBuilder()
  .add("employees", Json.createArrayBuilder()
    .add(Json.createObjectBuilder()
      .add("firstName", "John")
      .add("lastName", "Doe")))
  .build();
 211
Author: Grammin, 2014-06-06 19:48:02

Je suppose que vous obtenez ce JSON à partir d'un serveur ou d'un fichier, et que vous souhaitez en créer un objet JSONArray.

String strJSON = ""; // your string goes here
JSONArray jArray = (JSONArray) new JSONTokener(strJSON).nextValue();
// once you get the array, you may check items like
JSONOBject jObject = jArray.getJSONObject(0);

J'espère que cela aide:)

 11
Author: Naeem A. Malik, 2013-09-24 13:47:13

Small la méthode réutilisable peut être écrite pour créer un objet json pour éviter le code en double

JSONObject  getPerson(String firstName, String lastName){
   JSONObject person = new JSONObject();
   person .put("firstName", firstName);
   person .put("lastName", lastName);
   return person ;
} 

public JSONObject getJsonResponse(){

    JSONArray employees = new JSONArray();
    employees.put(getPerson("John","Doe"));
    employees.put(getPerson("Anna","Smith"));
    employees.put(getPerson("Peter","Jones"));

    JSONArray managers = new JSONArray();
    managers.put(getPerson("John","Doe"));
    managers.put(getPerson("Anna","Smith"));
    managers.put(getPerson("Peter","Jones"));

    JSONObject response= new JSONObject();
    person .put("employees", employees );
    person .put("manager", managers );
    return response;
  }
 2
Author: Manasi, 2018-07-31 15:10:30