我想使用JSONObject和JSONArray构建一个类似于java中的结构的JSON对象。
我已经看过堆栈溢出中的各种帖子,其中建议使用推送、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"
}
]
}
]
}
发布于 2014-02-26 21:31:16
使用导入的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
:
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中用'add‘代替了'put’。
发布于 2014-02-26 22:03:08
这里有一个粗略的例子。你应该能够改进。(您可能会对这个Java“教程”http://docs.oracle.com/javaee/7/tutorial/doc/jsonp.htm#GLRBB感兴趣
(本例使用Java中包含的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();
}
}
https://stackoverflow.com/questions/22042638
复制相似问题