1. 程式人生 > >fastjson解析JSON字串時部分引數亂序解決方法

fastjson解析JSON字串時部分引數亂序解決方法

近期在開發中遇到一個這樣的問題,在做一個加密驗籤的功能時攔截器接收到JSON字串的時候進行JSONObject轉換時裡面部分引數與傳遞過來的格式出現不一致亂序問題。導致簽名加密異常。

跟蹤fastjson原始碼,在com.alibaba.fastjson.parser.DefaultJSONParser 類發現:

else if (ch == '{') { // 減少巢狀,相容android    

lexer.nextToken();    

final boolean parentIsArray = fieldName != null && fieldName.getClass() == Integer.class;    

JSONObject input = new JSONObject(lexer.isEnabled(Feature.OrderedField)); 

在fastjson會進行Feature.OrderField的判斷,如果在解析json的時候加上這一條屬性,即可解決json解析後亂序的問題,具體程式碼如下:

JSONObject requestBody = JSONObject.parseObject(requestWrapper.getBody(),Feature.OrderedField);