最近在項目中用到阿里的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的順序相同