使用JSONObject在Java中为以下结构创建嵌套JSON对象?

我想构建一个JSON对象,类似于使用JSONObject和JSONArray跟踪java中的结构。

我已经经历了堆栈溢出中的各种post,这建议使用push,put等方法,我无法识别JSONArray。 请帮忙。

{ "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" } ] } ] } 

使用import org.json.JSONArrayorg.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); 

为清晰起见,我没有包含第一个数组的第二个元素。 希望你明白这一点。

编辑:

之前的答案是假设您使用的是org.json.JSONObjectorg.json.JSONArray

对于net.sf.json.JSONObjectnet.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); 

基本上它是相同的,在JSONObject中替换’element’的’put’方法,在JSONArray中’put’替换’add’。

这是一个粗略的例子。 你应该能够改进。 (您可能对此Java教程感兴趣http://docs.oracle.com/javaee/7/tutorial/doc/jsonp.htm#GLRBB

(此示例使用Java EE中包含的JSON参考实现(可在此处获得: 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(); } }