fastjson輸出順序問題

今天遇到JSON.toJSONString();順序錯亂問題

代碼

fastjson輸出順序問題

以這樣的方式放入map,然後用JSON.toJSONString(mapresult)進行轉換結果發現排列順序變成了了data,msg,para,然後多次轉換map放入順序發現輸出值順序一直不變,然後嘗試改變輸入鍵,給前面加數字如:1para這時候順出順序變成了1para最先,首先想到的肯定是map的無序性導致的,然後將hashmap改用linkhashmap,經測試與第一次順出一樣,data,msg,para,這時候讓我有點懷疑linkhashmap是否起了作用,然後打印了一下鍵值順序,沒有任何問題,是按照放入的順序輸出的,那麼問題出在哪裡了,沒錯就是JSON.toJSONString(mapresult)這個json轉換的問題,上網搜了一下答案甚少,大部分都是自己調用數據返回時處理,雲棲社區有一篇建議是用註解實現排序,我勒個擦,看了一下也有些太複雜了吧

fastjson輸出順序問題

雲棲地址:https://yq.aliyun.com/ask/318969

這個個人覺得確實不太好,那怎麼辦,別急這時候我就想用谷歌的gson試一試,果然不負眾望,完全按照輸入順序完美輸出

寫法如下

fastjson輸出順序問題

就是將1的寫法換成下面2這種寫法,前面輸出也不需要linkhashmap順出順序依然正常,至此json輸出順序問題解決。

一、下面是fastjson結果

1.輸入參數

fastjson輸出順序問題

2.用fastjson轉換

String json=JSON.toJSONString(mapresult);

3.輸出結果;

fastjson輸出順序問題

可以看出是按照字母順序排序的,鍵前面帶數字則按照數字排序

二、下面是Gson結果

1.輸入參數

fastjson輸出順序問題

2.用谷歌的GSON轉換

fastjson輸出順序問題

3.順出結果

fastjson輸出順序問題


分享到:


相關文章: