開發過程中遇到一個問題,服務器經過排序返回后的字符串數據使用fastjson解析后,數據順序發生變化,引起業務異常。
解決辦法:
1、解析時增加參數不調整順序
JSONObject respondeBodyJson = JSONObject.parseObject(jsonStr, Feature.OrderedField);
2、初始化json對象為有序對象:
JSONObject retObj = new JSONObject(true);
這樣生成的json對象就與放入數據時一致。
3、使用Gson解析
JsonObject returnData = new JsonParser().parse(replyString).getAsJsonObject();
使用阿里巴巴的fastjson對json字符串進行序列化,序列化之后發現順序發生了改變,導致之后業務出現問題。
解決方法:
LinkedHashMap<String, Object> json = JSON.parseObject(message,LinkedHashMap.class, Feature.OrderedField); JSONObject jsonObject=new JSONObject(true); jsonObject.putAll(json);
先將字符串轉化為LinkedHashMap,然后定義有序的json對象,將map對象復制到json對象中即可。