import net.sf.json.*;
public class JSONDemo {
/**
* @param args
*/
public static void main(String[] args) {
JSONObject mainObj = new JSONObject();
JSONObject jObj1 = new JSONObject();
JSONObject jObj2 = new JSONObject();
JSONArray jA1 = new JSONArray();
JSONArray jA2 = new JSONArray();
JSONArray mainArray= new JSONArray();
jObj1.accumulate("id", 17);
jObj1.accumulate("name", "Alex");
jObj1.accumulate("children", jA1);
mainArray.add(jObj1);
jObj2.accumulate("id", 94);
jObj2.accumulate("name", "Steve");
jObj2.accumulate("children", jA2);
//Adding the new object to jObj1 via jA1
jA1.add(jObj2);
mainObj.accumulate("ccgs", mainArray);
System.out.println(mainObj.toString());
}
}
我得到的输出是
{"ccgs":[{"id":17,"name":"Alex","children":[]}]}
我希望jObj2
的子键中有jObj1
。
答案 0 :(得分:2)
显然,节点创建顺序会对生成的字符串产生影响。如果更改对象创建顺序,从子项开始,Json是正确的。
查看该代码:
public static void main(String[] args) {
// first create the child node
JSONObject jObj2 = new JSONObject();
jObj2.accumulate("id", 94);
jObj2.accumulate("name", "Steve");
jObj2.accumulate("children", new JSONArray());
// then create the parent's children array
JSONArray jA1 = new JSONArray();
jA1.add(jObj2);
// then create the parent
JSONObject jObj1 = new JSONObject();
jObj1.accumulate("id", 17);
jObj1.accumulate("name", "Alex");
jObj1.accumulate("children", jA1);
// then create the main array
JSONArray mainArray = new JSONArray();
mainArray.add(jObj1);
// then create the main object
JSONObject mainObj = new JSONObject();
mainObj.accumulate("ccgs", mainArray);
System.out.println(mainObj);
}
输出结果为:
{"ccgs":[{"id":17,"name":"Alex","children":[{"id":94,"name":"Steve","children":[]}]}]}
答案 1 :(得分:0)
如果你想要这样的东西{“ccgs”:[{“id”:17,“name”:“Alex”,“children”:{“id”:94,“name”:“Steve”,“儿“:[]}}]}
然后你可以这样做。
JSONObject mainObj = new JSONObject();
JSONObject jObj1 = new JSONObject();
JSONObject jObj2 = new JSONObject();
JSONArray jA1 = new JSONArray();
JSONArray jA2 = new JSONArray();
JSONArray mainArray= new JSONArray();
jObj2.accumulate("id", 94);
jObj2.accumulate("name", "Steve");
jObj2.accumulate("children", jA2);
jObj1.accumulate("id", 17);
jObj1.accumulate("name", "Alex");
jObj1.accumulate("children", jObj2);
mainArray.add(jObj1);
//Adding the new object to jObj1 via jA1
jA1.add(jObj2);
mainObj.accumulate("ccgs", mainArray);
System.out.println(mainObj.toString());