JSON嵌套数据创建Java中
问题描述:
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());
}
}
失败我得到的输出是JSON嵌套数据创建Java中
{"ccgs":[{"id":17,"name":"Alex","children":[]}]}
我想要的jObj2
的jObj1
孩子的关键之内。
答
显然,节点创建顺序对生成的字符串有影响。如果您更改对象创建顺序,从孩子开始,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":[]}]}]}
答
如果你想要像这样{“ccgs”:[{“id”:17,“name”:“Alex”,“children”:{“id”:94,“name”:“Steve”, “children”:[]}}]}
然后你可以这样做。
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());
+1
但是如果我想添加史蒂夫的一个多个兄弟withing亚历克斯的孩子关键? – nixsix6
+0
然后,您将不得不将所有兄弟姐妹添加到数组中,并将该数组添加到子节点。 –
谢谢你的回答。 – nixsix6