fasterxml-jackson发生Can not deserialize instance of的原因
背景:
项目中使用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的原因相关推荐
- com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `x`
记录一下有点蠢的问题,序列化再次序列化就会出现这种问题. [2022-05-16 10:18:18.645] [ERROR] com.fu.common.global.GlobalExceptionH ...
- com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `
一 问题: Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct ins ...
- com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct (no Creators)
摘要 记录下使用lombok遇到的反序列问题,一开始在lombok1.16.18中并没有发现,然后应用中没有指定lombok全局版本,引入的其他二方包将lombok版本提升到了1.16.20,然后报错 ...
- Cannot deserialize instance of `java.util.ArrayList<com.entity.Test>` out of VALUE_STRING token
是因为返回的JSON数据解析成Test实体的时候报错了, 我这里报错是因为: JSON里面的某些字段超出了Test里面属性定义的字段类型 完整报错如下 : Caused by: com.fasterx ...
- com.fasterxml.jackson.databind.exc.InvalidDefinitionException
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: 错误信息 com.fasterxml.jackson.databind.e ...
- com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field FileSize
请求阿里云的OSS接口图片信息,返回json格式的数据,通过ObjectMapper将json转为Image对象时候报错转换失败 将json转对象的代码: String jsonStr = " ...
- com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'user'
nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'user' 可能错误原因: ...
- 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. ...
- com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.zyw
问题如下 com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of com ...
最新文章
- (10)Spring Boot修改端口号【从零开始学Spring Boot】
- HTTP协议之响应头Date与Age
- mysql 忘记root密码的解决
- Ctrl+F5不能使用的问题
- Pytorch快速入门笔记
- java 检查目录是否存在_如何检查Java目录是否存在?
- Vue.js使用矢量图
- php基本语法 格式,PHP 基本语法格式
- 使用GUID作为数据库主键与INT作为主键的性能测试
- 【P2P网络】BitTorrent协议中文版4
- Photoshop更换证件照底色
- SpringBoot的Banner
- Nginx 单IP绑定多域名配置 顶级域名重定向到www域名
- 计算机考研的专硕是不是越来越难,专硕考研变难了,该211改考数一英一!近期高校初试科目调整通知...
- 可口可乐市场调查失败的原因_可口可乐公司一次不成功的市场调查
- C++编译时出现未定义的引用问题解决
- Linux驱动 | OLED显示模块驱动(SPI)
- HTML+CSS D08浮动
- Cu50温度传感器的误差分析
- 似然函数取对数的原因
热门文章
- 开发通用资料——常用接口引脚定义
- 少年得志中年入狱,李一男能再造一个“四轮的小牛”吗?
- 【惊呼】微信最多可以加多少好友,真正原因可能出乎你的想象!
- Unity百度地图,支持PC,Android,iOS,支持添加模型,支持卫星图,街道图
- 估值 是什么意思。 怎么估值。
- SqlNullValueException: Data is Null. This method or property cannot be called on Null values.
- 大学计算机类专业按成绩分,那个大学的计算机专业比较好
- 卡耐基人际关系学-第一章 卡耐基应付对手的方法-一 避免伤害的艺术
- 从发布-订阅模式到Vue响应系统
- 子查询和关联查询 效率