java中關於JSONArray和JSONObject的順序變化的問題

 

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對象後,順序又變化了!

相關文章
相關標籤/搜索