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":[]}]} 

我想要的jObj2jObj1孩子的关键之内。

显然,节点创建顺序对生成的字符串有影响。如果您更改对象创建顺序,从孩子开始,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":[]}]}]} 
+0

谢谢你的回答。 – nixsix6

如果你想要像这样{“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

然后,您将不得不将所有兄弟姐妹添加到数组中,并将该数组添加到子节点。 –