Como criar JSONArray correto em Java usando JSONObject

Como posso criar um object JSON como o seguinte, em 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"} ] } 

Eu encontrei muitos exemplos, mas não a minha string exatamente JSONArray.

Aqui está algum código usando o java 6 para você começar:

 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: Desde que tem havido muita confusão sobre put vs add aqui vou tentar explicar a diferença. No java 6 org.json.JSONArray contém o método put e no java 7 javax.json contém o método add .

Um exemplo disso usando o padrão de construtor no java 7 é semelhante a isto:

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

Eu suponho que você está recebendo este JSON de um servidor ou um arquivo, e você deseja criar um object JSONArray fora dele.

 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 isto ajude 🙂

Pequeno método reutilizável pode ser escrito para criar um object json 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; }