我想使用JSONObject和JSONArray构建类似于遵循Java中的结构的JSON对象。
我已经遍历了堆栈溢出中的各种帖子,这建议使用无法识别JSONArray的方法,例如push,put等。请帮忙。
{ "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" } ] } ] }
与进口org.json.JSONArray和org.json.JSONObject
org.json.JSONArray
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);
为了清楚起见,我没有包括第一个数组的第二个元素。希望你明白了。
编辑:
先前的答案是假设您正在使用org.json.JSONObject和org.json.JSONArray。
对于net.sf.json.JSONObject和net.sf.json.JSONArray:
net.sf.json.JSONObject
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);
基本上是相同的,在JSONObject中将方法’put’替换为’element’,在JSONArray中将方法’put’替换为’add’。