Cannot construct instance of XXX(... , exist) : cannot deserialize from Object value (...) at

前天,做spring boot框架的 @RestController @RequestMapping @RequestBody 使用post方法以body传递参数的实验,
但,使用postman测试post,总报错 500 服务器错误,
如下图:
在这里插入图片描述
遇到java类的问题,千万不要慌,去看Java控制台console的报错信息就能解决问题,
Java控制台console的报错信息,如下:

Cannot construct instance of XXX(… , exist) : cannot deserialize from Object value (…) at

根据控制台的报错:
Cannot construct instance of com.example.demo.User (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
定位到了原因:
是实体类(User.java)中被人为添加了一个有参构造函数
public User(String name, String email) {this.name = name; this.email = email;},
从而导致JVM就不会再为实体类(User.java)添加默认的无参构造函数了,
而Java 用来处理 JSON 格式数据的类库 jackson 的反序列化还需要无参构造函数,
因此报错。
也就是说, Java 在处理 JSON 数据格式的时候,要使用 jackson 这个类库,而Jackson 处理 JSON 数据时是需要 deserialize 的,而反序列化还需要无参的构造函数,所以再遇到此类情况一定要在实体类中手工添加无参的构造函数,

解决办法:
在该实体类(User.java)中添加了一个无参构造函数
public User(){};
只需这个简短的一句话代码问题就解决了。

February03rd2021wednesday

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值