1:JSONArray中對象的順序是不會變化的,也就是put進去的時候是什麼順序,取的時候就是什麼順序。java
2:JSONObject put數據以後,排序會發生變化。json
以下放入JSONObject中數據, this
JSONObject object=new JSONObject(); 對象
object.put("aaa",111); 排序
object.put("bbb",222); string
object.put("ccc",333); object
object.put("ddd",444); map
取出來的時候,可能爲如下:數據
{"aaa":111,"ddd":444,"ccc":333,"bbb":222} 生成
由於JsonObject內部是用Hashmap來存儲的,因此輸出是按key的排序來的,若是要讓JsonObject按固定順序(put的順序)排列,能夠修改JsonObject的定義HashMap改成LinkedHashMap。
public JSONObject() {
this.map = new LinkedHashMap(); //new HashMap();
}
即定義JsonObject能夠這樣:JSONObject jsonObj =new JSONObject(newLinkedHashMap());
這樣定義的JSONObject對象就能知足順序不變的要求了。
3:java中生成的JSONObject,若是轉成string後,傳到js中,則順序還不會變化,可是在js中將這個string轉成js的JsonObject對象後,順序又變化了!