背景:

项目中使用jackson反序列化工作时出现了Can not deserialize instance of相关的异常,现在针对出现的几种情况做一个小小的总结。

(1)Cannot deserialize instance of `com.ysl.test.bo.Street` out of START_ARRAY token

public class AddressList {private List<Street> streetLine;private String city;private String state;private String postalCode;private String county;private String countryCode;}
@Data
public class AddressObject {private Street streetLine;private String city;private String state;private String postalCode;private String county;private String countryCode;}

测试方法:

@Testpublic void test1()throws Exception{ObjectMapper objectMapper = new ObjectMapper();AddressList addressList = new AddressList();List<Street> streetList = new ArrayList<Street>();Street street = new Street();street.setAddressLine1("street1");street.setAddressLine2("street2");streetList.add(street);addressList.setStreetLine(streetList);addressList.setCity("china");String addressStr = objectMapper.writeValueAsString(addressList);AddressObject addressObject = objectMapper.readValue(addressStr, AddressObject.class);}
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `com.ysl.test.bo.Street` out of START_ARRAY tokenat [Source: (String)"{"streetLine":[{"addressLine1":"street1","addressLine2":"street2"}],"city":"china","state":null,"postalCode":null,"county":null,"countryCode":null}"; line: 1, column: 15] (through reference chain: com.ysl.test.bo.AddressObject["streetLine"])

错误原因: 待转换的json字符串里面(如AddressList里面的streetLine属性)为List类型的时候,而反序列化中提供的class文件 对应的字段为Object属性

@Testpublic void test2()throws Exception{ObjectMapper objectMapper = new ObjectMapper();AddressObject addressObject = new AddressObject();Street street = new Street();street.setAddressLine1("street1");street.setAddressLine2("street2");addressObject.setStreetLine(street);addressObject.setCity("china");String addressStr = objectMapper.writeValueAsString(addressObject);AddressList addressList = objectMapper.readValue(addressStr, AddressList.class);}
 Cannot deserialize instance of `java.util.ArrayList` out of START_OBJECT tokenat [Source: (String)"{"streetLine":{"addressLine1":"street1","addressLine2":"street2"},"city":"china","state":null,"postalCode":null,"county":null,"countryCode":null}"; line: 1, column: 15] (through reference chain: com.ysl.test.bo.AddressList["streetLine"])

错误原因:待转换的json字符串里面(如AddressObject里面的streetLine属性)为Object类型的时候,而反序列化中提供的class文件 对应的字段为List属性。

补充:

List与数组的序列化后的json字符串是一样的,由此他们之间可以互相反序列化。

fasterxml-jackson发生Can not deserialize instance of的原因相关推荐

  1. com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `x`

    记录一下有点蠢的问题,序列化再次序列化就会出现这种问题. [2022-05-16 10:18:18.645] [ERROR] com.fu.common.global.GlobalExceptionH ...

  2. com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `

    一 问题: Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct ins ...

  3. com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct (no Creators)

    摘要 记录下使用lombok遇到的反序列问题,一开始在lombok1.16.18中并没有发现,然后应用中没有指定lombok全局版本,引入的其他二方包将lombok版本提升到了1.16.20,然后报错 ...

  4. Cannot deserialize instance of `java.util.ArrayList<com.entity.Test>` out of VALUE_STRING token

    是因为返回的JSON数据解析成Test实体的时候报错了, 我这里报错是因为: JSON里面的某些字段超出了Test里面属性定义的字段类型 完整报错如下 : Caused by: com.fasterx ...

  5. com.fasterxml.jackson.databind.exc.InvalidDefinitionException

    com.fasterxml.jackson.databind.exc.InvalidDefinitionException: 错误信息 com.fasterxml.jackson.databind.e ...

  6. com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field FileSize

    请求阿里云的OSS接口图片信息,返回json格式的数据,通过ObjectMapper将json转为Image对象时候报错转换失败 将json转对象的代码: String jsonStr = " ...

  7. com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'user'

    nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'user' 可能错误原因: ...

  8. Rest请求使用Jackson反序列化报错,Cannot deserialize instance of `java.lang.String` out of START_OBJECT toke

    Rest接口,使用Jackson作为json转换器,后端接收请求的时候报错了,异常信息: JSON parse error: Cannot deserialize instance of `java. ...

  9. com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.zyw

    问题如下 com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of com ...

最新文章

  1. (10)Spring Boot修改端口号【从零开始学Spring Boot】
  2. HTTP协议之响应头Date与Age
  3. mysql 忘记root密码的解决
  4. Ctrl+F5不能使用的问题
  5. Pytorch快速入门笔记
  6. java 检查目录是否存在_如何检查Java目录是否存在?
  7. Vue.js使用矢量图
  8. php基本语法 格式,PHP 基本语法格式
  9. 使用GUID作为数据库主键与INT作为主键的性能测试
  10. 【P2P网络】BitTorrent协议中文版4
  11. Photoshop更换证件照底色
  12. SpringBoot的Banner
  13. Nginx 单IP绑定多域名配置 顶级域名重定向到www域名
  14. 计算机考研的专硕是不是越来越难,专硕考研变难了,该211改考数一英一!近期高校初试科目调整通知...
  15. 可口可乐市场调查失败的原因_可口可乐公司一次不成功的市场调查
  16. C++编译时出现未定义的引用问题解决
  17. Linux驱动 | OLED显示模块驱动(SPI)
  18. HTML+CSS D08浮动
  19. Cu50温度传感器的误差分析
  20. 似然函数取对数的原因

热门文章

  1. 开发通用资料——常用接口引脚定义
  2. 少年得志中年入狱,李一男能再造一个“四轮的小牛”吗?
  3. 【惊呼】微信最多可以加多少好友,真正原因可能出乎你的想象!
  4. Unity百度地图,支持PC,Android,iOS,支持添加模型,支持卫星图,街道图
  5. 估值 是什么意思。 怎么估值。
  6. SqlNullValueException: Data is Null. This method or property cannot be called on Null values.
  7. 大学计算机类专业按成绩分,那个大学的计算机专业比较好
  8. 卡耐基人际关系学-第一章 卡耐基应付对手的方法-一 避免伤害的艺术
  9. 从发布-订阅模式到Vue响应系统
  10. 子查询和关联查询 效率