UnrecognizedPropertyException: Unrecognized field 解决

简介: UnrecognizedPropertyException: Unrecognized field 解决

转载请注明出处:

  在项目得不同环境上对接外部的服务接口,且存在不同版本间可能有字段不同得问题,遇到这种问题在使用jackson解析时,如果格式化得字符串与定义得java类不能完全对应时,就会报错:Unrecognized field ,代码还原:

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;
public class CounterEntity {
    private long inoctets;
    @JsonProperty("avg-bit-rate")
    private long avgBitRate;
    @JsonProperty("avg-octet-rate")
    private long avgOctetRate;
    public static void main(String[] args) {
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            String jsonStr = "{\"pkts\":0,\"octets\":0,\"inpkts\":0,\"inoctets\":0,\"avg-bit-rate\":0,\"avg-octet-rate\":0,\"avg-packet-rate\":0,\"rt-bit-rate\":0,\"rt-octet-rate\":0,\"rt-packet-rate\":0}";
            CounterEntity entity = objectMapper.readValue(jsonStr, CounterEntity.class);
            System.out.println(entity);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

  运行main方法,报错如下:

  

  解决方案,在转换得类上使用 这个注解 @JsonIgnoreProperties(ignoreUnknown = true) ,该注解会在解析的时候,会自动忽略一些不存在得属性。通过以下方式就可以正常得序列化和反序列化。

 

  @JsonIgnoreProperties是一个Jackson库提供的注解,用于标记在序列化和反序列化过程中需要忽略的属性。它可以应用于类级别和属性级别。 在类级别上使用@JsonIgnoreProperties注解,可以指定要忽略的属性列表。例如:

@JsonIgnoreProperties({"field1", "field2"})
public class MyClass {
    private String field1;
    private String field2;
    private String field3;
    @JsonIgnoreProperties
    private String field4;
}

 

标签: java , 异常 , json

相关文章
javaDataUtil将 Date 转为 LocalDateTime转Long转String转Date
javaDataUtil将 Date 转为 LocalDateTime转Long转String转Date
713 1
|
网络协议 Linux
route 或 ip route命令详解
【4月更文挑战第9天】`route`和`ip route`是Linux下管理IP路由的命令,用于查看和配置路由表。`route`命令简单,可查看、添加和删除路由,而`ip route`更现代且功能强大,支持路由可信度和距离设置。`ip route show`类似于`route -n`用于显示路由信息。路由类型包括主机、网络和默认路由。在现代Linux系统中,推荐使用`ip route`。
3568 1
|
Arthas SQL Java
Arthas之WatchSql
在使用Arthas排查线上问题的时候,有些时候我们需要查看某些Sql的生成,如果线上没有完备的APM的话,那么如何临时查看呢,前几篇文章我们分析了Mybatis的插件机制,如果你还记得的话,我们可以通过watch这个插件进行查看。
3858 1
Arthas之WatchSql
|
Oracle 关系型数据库 数据库
Oracle查询优化-限制返回行数
【1月更文挑战第1天】【1月更文挑战第2篇】Oracle数据库是常用的数据库之一尤其数据量较大时很友好。但当一个查询结果太大时,Oracle很容易将内存和 CPU 规模炸裂而导致异常,限制查询结果返回的行数是很有必要的。有的时候又不是进行分页查询的情况下,就需要灵活运用ROWNUM。
1665 0
|
开发工具 git
|
人工智能 IDE 定位技术
AI IDE正式上线!通义灵码开箱即用
通义灵码AI IDE现已正式上线,用户可免费下载使用。作为AI原生开发环境工具,它深度适配千问3大模型,集成通义灵码插件能力,支持编程智能体、行间建议预测和行间会话等功能。其核心亮点包括:支持最强开源模型千问3,具备MCP工具调用能力;开箱即用的智能编码助手;自带编程智能体模式,端到端完成编码任务;长期记忆、NES行间预测及Inline Chat功能,大幅提升编程效率。目前,通义灵码插件下载量超1500万,生成代码超30亿行,广泛应用于企业开发场景。
AI IDE正式上线!通义灵码开箱即用
|
数据可视化 大数据 定位技术
GIS:开源webgl大数据地图类库整理
GIS:开源webgl大数据地图类库整理
1226 0
|
Ubuntu 安全 Linux
十款常用Linux系统介绍
本文不是什么大盘点。市面上有好几百款发行版,每款发行版在某个方面都与众不同。不可能在此全部罗列,本文只罗列了十款最常见的Linux发行版(世界上只有两种人,一种是懂二进制的,另一种是不懂二进制的)。请宣传Linux的魅力或威力。