com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field 异常

简介: 分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519)1.1.1. 前言近期在使用ObjectMapper对象将json转化为对象的时候,出错,解决这个异常之后,打算分享一下,免得别人也遇到类似的问题,具体的出错信息部分如下所示:com.

分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519)

1.1.1. 前言

近期在使用ObjectMapper对象将json转化为对象的时候,出错,解决这个异常之后,打算分享一下,免得别人也遇到类似的问题,具体的出错信息部分如下所示:

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

1.1.2. jar

我的maven pom.xml如下所示:

<jackson-2-version>2.4.2</jackson-2-version>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</exclusion>
</exclusions>
<version>${jackson-2-version}</version>
</dependency>

下面还原一下问题的场景。

1.1.3. bean实体

需要将json转化的实体对象User类如下:

public class User {
private long id;
private String name;
private boolean flag;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", flag=" + flag + "]";
}
}

1.1.4. 测试

具体的测试程序如下所示:

String s = "{\"id\":1,\"name\":\"test\",\"age\":19}";

ObjectMapper mapper = new ObjectMapper();

User value = mapper.readValue(s, User.class);

System.out.println(value);

因为user类中的属性有idnameflag,而对应的s字符串中有age字段所以不匹配,报错信息如下:

Exception in thread "main" com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "age" (class com.daling.bpmn.test.User), not marked as ignorable (3 known properties: "id", "name", "flag"])

 at [Source: {"id":1,"name":"test","age":19}; line: 1, column: 31] (through reference chain: com.daling.bpmn.test.User["age"])

at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:51)

at com.fasterxml.jackson.databind.DeserializationContext.reportUnknownProperty(DeserializationContext.java:731)

at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:915)

at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1298)

at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1276)

at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:243)

at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:118)

at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3051)

at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2146)

at com.daling.vrm.controller.product.NewShelvesController.main(NewShelvesController.java:71)

1.1.5. 最终解决方案

1.1.5.1. 第一种解决方案

ObjectMapper 对象添加

mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

String s = "{\"id\":1,\"name\":\"test\",\"age\":19}";

ObjectMapper mapper = new ObjectMapper();

mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

User value = mapper.readValue(s, User.class);

System.out.println(value);

1.1.5.2. 第二种解决方案

在需要转化的对象的类中添加注解,注解信息如下:

@JsonIgnoreProperties(ignoreUnknown = true)

public class User

...

分享牛,分享、我们是快乐的。

相关文章
|
消息中间件 关系型数据库 Kafka
flink cdc 数据问题之数据丢失如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
Visual Studio Code开发常用的工具栏选项,查看源码技巧以及【vscode常用的快捷键】
Visual Studio Code开发常用的工具栏选项,查看源码技巧以及【vscode常用的快捷键】
1043 0
|
SQL Java 数据库连接
Mybatis:通过on duplicate key update实现批量插入或更新
Mybatis:通过on duplicate key update实现批量插入或更新
|
缓存 监控 安全
Spring AOP 详细深入讲解+代码示例
Spring AOP(Aspect-Oriented Programming)是Spring框架提供的一种面向切面编程的技术。它通过将横切关注点(例如日志记录、事务管理、安全性检查等)从主业务逻辑代码中分离出来,以模块化的方式实现对这些关注点的管理和重用。 在Spring AOP中,切面(Aspect)是一个模块化的关注点,它可以跨越多个对象,例如日志记录、事务管理等。切面通过定义切点(Pointcut)和增强(Advice)来介入目标对象的方法执行过程。 切点是一个表达式,用于匹配目标对象的一组方法,在这些方法执行时切面会被触发。增强则定义了切面在目标对象方法执行前、执行后或抛出异常时所
16419 4
|
存储 算法 Java
Java ZGC 深度剖析及其在构建低延迟流系统中的实践心得
ZGC 是 Java 的一种低延迟垃圾回收器,旨在减少 STW 时间,提高对延迟敏感应用的性能。它通过并发和分区收集技术实现这一目标,确保 STW 时长可预测且低至亚毫秒级别。ZGC 使用了着色指针、读屏障、区域化内存管理和压缩迁移等技术。读屏障确保对象在 GC 期间的正确加载,而区域化内存管理则允许高效地分配和释放内存。ZGC 自动调整配置以适应不同应用,且支持大范围的内存大小。通过调整参数如堆大小、GC 线程数、动态 GC 策略等,可以进一步优化延迟。AutoMQ 在使用 ZGC 后,成功将 STW 时间降低到 50 微秒以下,提升了服务性能。
Java ZGC 深度剖析及其在构建低延迟流系统中的实践心得
|
存储 对象存储
【阿里云OSS】You have no right to access this object because of bucket acl.
【阿里云OSS】You have no right to access this object because of bucket acl.
17949 1
【阿里云OSS】You have no right to access this object because of bucket acl.
|
Web App开发 JavaScript 前端开发
解决Vue.js Devtools未检测到Vue实例的问题
解决Vue.js Devtools未检测到Vue实例的问题
1246 1
|
Go 开发工具
编程笔记 GOLANG基础 004 GOLANG常用命令及VSCODE快捷键
编程笔记 GOLANG基础 004 GOLANG常用命令及VSCODE快捷键
270 2
|
机器学习/深度学习 算法 Java
Java使用OpenCV进行图像操作
OpenCV是一个开源的计算机视觉库,它提供了一系列丰富的图像处理和计算机视觉算法,包括图像读取、显示、滤波、特征检测、目标跟踪等功能。
6174 3
|
存储 JSON 前端开发
一步到位 SpringBoot 序列化与消息转换器 (你需要的这里都有)
本篇文章记录的为SpringBoot Jackson序列化,ObjectMapper,configureMessageConverters,MappingJackson2HttpMessageConverter消息转换器相关内容,适合在学Java的小白,帮助新手快速上手,也适合复习中,面试中的大佬
4611 0