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= 类// 如果有多个包名前缀,用逗号隔开

  • 在代码中添加配置(我使用的这种)

    1 ParserConfig.getGlobalInstance().addAccept("类");  // 如果有多个包名前缀,用逗号隔开

 

原文地址:https://www.cnblogs.com/rolayblog/p/11095476.html

时间: 2024-08-30 09:57:07

com.alibaba.fastjson.JSONObject cannot be cast to XXX异常解决的相关文章

42-字符串到json 的错误 com.alibaba.fastjson.JSONObject cannot be cast to java.lang.String

json: {"updated_at":1551780617,"attr":{"uptime_h":3,"uptime_m":17},"did":"GBBxjJYAxE4apkxwEzR3"} Map rMap = (Map) JSON.parse("{"updated_at":1551780617,"attr":{"uptim

com.alibaba.fastjson.JSONObject

package com.alibaba.fastjson; import java.util.Date; import java.util.List; import com.alibaba.fastjson.componet.Grade; import com.alibaba.fastjson.componet.User; import com.alibaba.fastjson.serializer.SerializerFeature; /** * @author Liang * * 2017年

com.alibaba.fastjson.JSONObject学习

JSONObject json = new JSONObject(); //设置json属性,可以是对象,数值 json.put("key",value); //获取json的普通对象和数值 json.get("key"); //获取json属性值,针对json对象,json数组等都有特定的方法,如获取数组和字json对象 json.getJSONArray("arr"); json.getJSONObject("jsonObj&quo

alibaba fastjson

public static void main(String[] args) { WaveSearchOutBoundNoticeDTO vo = new WaveSearchOutBoundNoticeDTO(); List<OutboundNoticeGroupSortDTO> groupSorts= new ArrayList<OutboundNoticeGroupSortDTO>(); vo.setOnhStartItemsCount(1); vo.setGroupSort

JSON工具类库: alibaba/fastjson 使用记录

JSON工具类库: alibaba/fastjson 使用记录 一.了解JSON JSON标准规范中文文档: http://www.json.org/json-zh.html 最佳实践:http://kimmking.github.io/2017/06/06/json-best-practice/ (JSON的高级使用,特别十分有参考价值) 二.项目地址和Wiki: Git地址: https://github.com/alibaba/fastjson Wiki:https://github.co

java alibaba fastJson 遍历数组json

import java.util.*; import com.alibaba.fastjson.*; public class Test { public static void main(String[] args) { //方法1 String json = "[{\"companyId\":\"111111111\",\"companyName\":\"Huuuu\",\"_uid\":10

com.alibaba.fastjson.JSON对类对象的序列化与反序列化

1. 目标 把类的对象存储到字符串可存储 2. 类定义 public interface JsonInterface { } mport com.alibaba.fastjson.JSON; import lombok.Getter; import lombok.Setter; @Setter @Getter public class JsonVo implements JsonInterface { private String id; private String name; public

阿里巴巴 fastjson-1.2.12.jar json解析异常java.lang.ClassFormatError: Invalid method Code length 66865 in class file com/alibaba/fastjson/serializer/ASMSerializer_6_UserKdlb

承接上篇:fastjson反序列化LocalDateTime失败的问题java.time.format.DateTimeParseException: Text '2019-05-24 13:52:11' could not be parsed at index 10 之前在线上用的版本是fastjson-1.2.7.jar 一切正常,更换以后时间解析看似一切正常. 因为在系统中设计json反序列化的地方比较多,刚刚放到生产环境,app那边的接口报错了 java.lang.ClassFormat

com.alibaba.fastjson和net.sf.json的区别

JSON有两种结构 json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构 1.对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为对象.key 获取属性值,这个属性值的类型可以是数字.字符串.数组.对象几种. 2.数组:数组在js中是中括号“[]”括起来的内容