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());
}
}
The output I got is
{"ccgs":[{"id":17,"name":"Alex","children":[]}]}
I wanted the jObj2 within the children key of jObj1.
Apparently the node creation order has an impact on the generated string. If you change the object creation order, beginning with the children, the Json is correct.
See that code :
The output is :