simple parse org example convert java json arrays jsonobject

java - parse - string to json example



¿Creando objetos JSON anidados para la siguiente estructura en Java usando JSONObject? (2)

Quiero crear un objeto JSON similar a seguir la estructura en java usando JSONObject y JSONArray.

He revisado varios mensajes en el desbordamiento de pila, lo que sugiere el uso de métodos como push, put, etc., que no puedo identificar para JSONArray. Por favor ayuda.

{ "name": "sample", "def": [ { "setId": 1, "setDef": [ { "name": "ABC", "type": "STRING" }, { "name": "XYZ", "type": "STRING" } ] }, { "setId": 2, "setDef": [ { "name": "abc", "type": "STRING" }, { "name": "xyz", "type": "STRING" } ] } ] }


Aquí hay un ejemplo crudo. Deberías poder refinar. (Puede que te interese este "tutorial" de Java http://docs.oracle.com/javaee/7/tutorial/doc/jsonp.htm#GLRBB

(Este ejemplo utiliza la implementación de referencia JSON incluida en Java EE (y disponible aquí: https://java.net/projects/jsonp/downloads/directory/ri )

package com.demo; import java.io.FileWriter; import java.io.IOException; import javax.json.Json; import javax.json.stream.JsonGenerator; public class JSONExample { public static void main(String[] args) { FileWriter writer = null; try { writer = new FileWriter("C://Users//Joseph White//Downloads//jsontext.txt"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } JsonGenerator gen = Json.createGenerator(writer); gen.writeStartObject().write("name", "sample") .writeStartArray("def") .writeStartObject().write("setId", 1) .writeStartArray("setDef") .writeStartObject().write("name", "ABC").write("type", "STRING") .writeEnd() .writeStartObject().write("name", "XYZ").write("type", "STRING") .writeEnd() .writeEnd() .writeEnd() .writeStartObject().write("setId", 2) .writeStartArray("setDef") .writeStartObject().write("name", "abc").write("type", "STRING") .writeEnd() .writeStartObject().write("name", "xyz").write("type", "STRING") .writeEnd() .writeEnd() .writeEnd() .writeEnd() .writeEnd(); gen.close(); } }


Con las importaciones org.json.JSONArray y org.json.JSONObject

JSONObject object = new JSONObject(); object.put("name", "sample"); JSONArray array = new JSONArray(); JSONObject arrayElementOne = new JSONObject(); arrayElementOne.put("setId", 1); JSONArray arrayElementOneArray = new JSONArray(); JSONObject arrayElementOneArrayElementOne = new JSONObject(); arrayElementOneArrayElementOne.put("name", "ABC"); arrayElementOneArrayElementOne.put("type", "STRING"); JSONObject arrayElementOneArrayElementTwo = new JSONObject(); arrayElementOneArrayElementTwo.put("name", "XYZ"); arrayElementOneArrayElementTwo.put("type", "STRING"); arrayElementOneArray.put(arrayElementOneArrayElementOne); arrayElementOneArray.put(arrayElementOneArrayElementTwo); arrayElementOne.put("setDef", arrayElementOneArray); array.put(arrayElementOne); object.put("def", array);

No incluí el segundo elemento del primer arreglo para mayor claridad. Espero que tengas el punto sin embargo.

EDITAR:

La respuesta anterior fue asumir que estabas usando org.json.JSONObject y org.json.JSONArray .

Para net.sf.json.JSONObject y net.sf.json.JSONArray :

JSONObject object = new JSONObject(); object.element("name", "sample"); JSONArray array = new JSONArray(); JSONObject arrayElementOne = new JSONObject(); arrayElementOne.element("setId", 1); JSONArray arrayElementOneArray = new JSONArray(); JSONObject arrayElementOneArrayElementOne = new JSONObject(); arrayElementOneArrayElementOne.element("name", "ABC"); arrayElementOneArrayElementOne.element("type", "STRING"); JSONObject arrayElementOneArrayElementTwo = new JSONObject(); arrayElementOneArrayElementTwo.element("name", "XYZ"); arrayElementOneArrayElementTwo.element("type", "STRING"); arrayElementOneArray.add(arrayElementOneArrayElementOne); arrayElementOneArray.add(arrayElementOneArrayElementTwo); arrayElementOne.element("setDef", arrayElementOneArray); object.element("def", array);

Básicamente es lo mismo, reemplazando el método ''put'' por ''elemento'' en JSONObject, y ''put'' por ''agregar'' en JSONArray.