com.alibaba.fastjson.JSONObject cannot be cast to XXX異常解決


項目開發中遇到過幾次這個問題,所以記錄一下,代碼如下:

1 @PostMapping("/save-files")
2     public void addFiles(@RequestBody List<AddFileRecordRequestDto> fileRecords)
3     {
4         LoginInfo loginInfo=sessionUtils.getLoginInfo();
5         Assert.notNull(loginInfo,"登錄信息已過期");
6         Assert.isTrue(!CollectionUtils.isEmpty(fileRecords),"數據不能為空");
7         fileRecordService.addFileRecord(fileRecords,loginInfo);
8     }
Controller
1 public void addFileRecord(List<AddFileRecordRequestDto> requestDtos, LoginInfo loginInfo) {
2 
3 }
Service

然后在進入Service的時候就拋出了以下異常:

1 java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to XXXXXXXX
異常提示

解決方法,更換fastJson版本,我之前用的是1.1.27,更改為1.2.49后,不再提示類型轉換錯誤,這時候又報了另外一個錯:autoType is not support,通過查詢可以看到:安全升級包禁用了部分autotype的功能,也就是"@type"這種指定類型的功能會被限制在一定范圍內使用。如果你使用場景中包括了這個功能,https://github.com/alibaba/fastjson/wiki/enable_autotype 這里有一個介紹如何添加白名單或者打開autotype功能

兩種解決方式:

  • 加上JVM啟動參數  
    1 fastjson.parser.autoTypeAccept= 類// 如果有多個包名前綴,用逗號隔開
    View Code

     

  • 在代碼中添加配置(我使用的這種)
    1 ParserConfig.getGlobalInstance().addAccept("類");  // 如果有多個包名前綴,用逗號隔開
    View Code

     

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM