150 votes

Comment créer un JSONArray correct en Java en utilisant JSONObject

Comment puis-je créer un objet JSON comme suit, en Java en utilisant JSONObject ?

{
    "employés": [
        {"prénom": "John", "nom": "Doe"},
        {"prénom": "Anna", "nom": "Smith"},
        {"prénom": "Peter", "nom": "Jones"}
    ],
    "manager": [
        {"prénom": "John", "nom": "Doe"},
        {"prénom": "Anna", "nom": "Smith"},
        {"prénom": "Peter", "nom": "Jones"}
    ]
}

J'ai trouvé beaucoup d'exemples, mais pas exactement la chaîne JSONArray que je cherche.

274voto

Grammin Points 4031

Voici un exemple de 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);

Éditer : Comme il y a eu beaucoup de confusion concernant put vs add, je vais tenter d'expliquer la différence. En Java 6, la classe org.json.JSONArray contient la méthode put et en Java 7, la classe javax.json contient la méthode add.

Un exemple utilisant le pattern builder en Java 7 ressemble à ceci :

JsonObject jo = Json.createObjectBuilder()
  .add("employees", Json.createArrayBuilder()
    .add(Json.createObjectBuilder()
      .add("firstName", "John")
      .add("lastName", "Doe")))
  .build();

17voto

Naeem A. Malik Points 198

Je suppose que vous récupérez ce JSON à partir d'un serveur ou d'un fichier, et que vous voulez en créer un objet JSONArray.

String strJSON = ""; // votre chaîne va ici
JSONArray jArray = (JSONArray) new JSONTokener(strJSON).nextValue();
// une fois que vous obtenez le tableau, vous pouvez vérifier des éléments comme
JSONOBject jObject = jArray.getJSONObject(0);

J'espère que cela vous aidera :)

16voto

Manasi Points 621

Petite méthode réutilisable peut être écrite pour créer un objet JSON de personne afin d'é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();
    response.put("employees", employees);
    response.put("manager", managers);
    return response;
}

5voto

MSD Points 278

Veuillez essayer ceci ... j'espère que cela aide

JSONObject jsonObj1=null;
JSONObject jsonObj2=null;
JSONArray array=new JSONArray();
JSONArray array2=new JSONArray();

jsonObj1=new JSONObject();
jsonObj2=new JSONObject();

array.put(new JSONObject().put("firstName", "John").put("lastName","Doe"))
.put(new JSONObject().put("firstName", "Anna").put("v", "Smith"))
.put(new JSONObject().put("firstName", "Peter").put("v", "Jones"));

array2.put(new JSONObject().put("firstName", "John").put("lastName","Doe"))
.put(new JSONObject().put("firstName", "Anna").put("v", "Smith"))
.put(new JSONObject().put("firstName", "Peter").put("v", "Jones"));

jsonObj1.put("employees", array);
jsonObj1.put("manager", array2);

Response response = null;
response = Response.status(Status.OK).entity(jsonObj1.toString()).build();
return response;

0voto

ubiquibacon Points 3212

Pour vous aider à répondre à des questions comme celle-ci à l'avenir, il suffit de regarder les constructeurs disponibles dans la documentation de l'API pour la classe avec laquelle vous travaillez. Pour JSONObject, la documentation de l'API peut être trouvée ici. Il semble que votre meilleure option serait ce constructeur qui prend une chaîne JSON pour construire une instance de JSONObject.

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