最近在專案中用到阿里的fastjson,發現乙個問題:
jsonobject fastjson = new jsonobject();上述**的輸出為:fastjson.put("1", "1");
fastjson.put("2", "1");
fastjson.put("3", "1");
fastjson.put("11", "1");
fastjson.put("22", "1");
fastjson.put("33", "1");
fastjson.put("111", "1");
fastjson.put("222", "1");
fastjson.put("333", "1");
system.out.println(fastjson.tojsonstring());
元素順序和put的順序並不相同
檢視了一下fastjson的原始碼
發現其預設的建構函式中使用的是hashmap,想要元素順序和put的順序相同,需要新建物件時指定為有序,這樣使用的就是linkedhashmap,是有序的
測試一下:
jsonobject fastjson = new jsonobject(true);輸出結果為:fastjson.put("1", "1");
fastjson.put("2", "1");
fastjson.put("3", "1");
fastjson.put("11", "1");
fastjson.put("22", "1");
fastjson.put("33", "1");
fastjson.put("111", "1");
fastjson.put("222", "1");
fastjson.put("333", "1");
system.out.println(fastjson.tojsonstring());
元素順序和put的順序相同
fastJson順序遍歷JSON欄位
fastjson在把json格式的字串轉換成jsonobject的時候,使用的是hashmap,所以排序規則是根據hash值排序的,如果想要按照字串順序遍歷json屬性,需要在轉換的時候指定使用linkedhashmap代替hashmap。public static void main string...
fastJson順序遍歷JSON欄位
fastjson在把json格式的字串轉換成jsonobject的時候,使用的是hashmap,所以排序規則是根據hash值排序的,如果想要按照字串順序遍歷json屬性,需要在轉換的時候指定使用linkedhashmap代替hashmap。以下為例項 public static void main ...
fastJson順序遍歷JSON欄位
fastjson在把json格式的字串轉換成jsonobject的時候,使用的是hashmap,所以排序規則是根據hash值排序的,如果想要按照字串順序遍歷json屬性,需要在轉換的時候指定使用linkedhashmap代替hashmap。public static void main string...