Cómo crear JSONArray correcto en Java usando JSONObject

¿Cómo puedo crear un objeto JSON como el siguiente, en Java usando 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"} ] } 

He encontrado un montón de ejemplos, pero no exactamente mi cadena JSONArray.

Aquí hay un código que usa java 6 para comenzar:

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

Editar: Dado que ha habido mucha confusión sobre put vs add aquí, intentaré explicar la diferencia. En java 6 org.json.JSONArray contiene el método put y en java 7 javax.json contiene el método add .

Un ejemplo de esto usando el patrón de constructor en java 7 se ve más o menos así:

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

Supongo que está obteniendo este JSON de un servidor o un archivo, y desea crear un objeto 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); 

Espero que esto ayude 🙂

Se puede escribir un pequeño método reutilizable para crear un objeto json persona para evitar código duplicado

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