fastjson欄位順序問題

2022-09-20 01:54:08 字數 1103 閱讀 7561

最近在專案中用到阿里的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...