fastjson解析JSON字串時部分引數亂序解決方法
阿新 • • 發佈:2019-01-30
近期在開發中遇到一個這樣的問題,在做一個加密驗籤的功能時攔截器接收到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);