Jackson 2.11.0无法使用@JsonCreator反序列化枚举值
发布时间:2021-03-31 13:53:52阅读:(849)
最近升级了spring boot的版本,结果发现原本使用@JsonCreator反序列化枚举值都报错了,报错内容如下:
.w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Input mismatch reading Enum `xyz.jieee.demo.DemoEnum`: properties-based `@JsonCreator` ([method xyz.jieee.demo.DemoEnum#getByCode(java.lang.String)]) expects JSON Object (JsonToken.START_OBJECT), got JsonToken.VALUE_STRING; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Input mismatch reading Enum `xyz.jieee.demo.DemoEnum`: properties-based `@JsonCreator` ([method xyz.jieee.demo.DemoEnum#getByCode(java.lang.String)]) expects JSON Object (JsonToken.START_OBJECT), got JsonToken.VALUE_STRING
于是开始排查问题,初步分析是jackson版本升级引起的,于是我开始降版本,当版本降为2.10.5时能正常运行,那么基本可以判断是2.11这个版本中存在Breaking change。
在查看jackson changelog后并没有发现提到相关内容,怀疑可能是jackson的一个bughttps://github.com/FasterXML/jackson/wiki/Jackson-Release-2.11
在jackson相关的issue中搜索了半天,发现好多人都遇到了这个问题,终于在某条评论中找到了解决方案:
将@JsonCreator修改为@JsonCreator(mode = JsonCreator.Mode.DELEGATING)
https://github.com/FasterXML/jackson-module-kotlin/issues/336#issuecomment-630587525
文章版权及转载声明:
文章转载或复制请以超链接形式并注明出处陌上小筑
文章推荐
热门文章
- 使用rook在k8s管理ceph集群
- 如何拉取k8s.grc.io、quay.io的镜像
- 二进制方式搭建Kubernetes 1.19.3高可用集群(三)——部署controller-manager和scheduler
- 由cookie SameSite引起的坑
- 二进制方式搭建Kubernetes 1.19.3高可用集群(二)——部署ETCD集群和api-server
- 使用Spring ldap操作active directory
- Gitlab企业版证书生成
- G1GC调优时遇到的坑
- Jackson 2.11.0无法使用@JsonCreator反序列化枚举值
- Spring boot 2.4.2 redisson报错问题排查
标签云
站点信息
- 建站时间:2019年6月15日
- 文章统计:32篇文章
- 统计数据:百度统计
- 总访问量:38965
- 今日访问量:10
发表评论