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
648 1
|
NoSQL Java Redis
SpringBoot集成Redis报non null key required(已解决)
SpringBoot开发过程中遇到的问题并记录
2077 0
SpringBoot集成Redis报non null key required(已解决)
|
6月前
|
人工智能 API 开发者
用 LangChain 驱动本地 Ollama 模型
本文详解如何用LangChain(基于最新Runnable API)调用本地Ollama模型,构建真正可用的私有化大模型应用。涵盖Ollama部署、OpenAI协议对接、Prompt编排、状态化对话(Memory)、工程实践建议等,兼顾安全性、可控性与落地性。(239字)
1389 2
|
搜索推荐 Java 开发者
org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException 问题处理
【5月更文挑战第14天】org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException 问题处理
5998 1
|
Java 数据库连接 mybatis
成功解决: Invalid bound statement (not found) 在已经使用mybatis的项目里引入mybatis-plus,结果不能共存的解决
这篇文章讨论了在已使用MyBatis的项目中引入MyBatis-Plus后出现的"Invalid bound statement (not found)"错误,并提供了解决方法,主要是通过修改yml配置文件来解决MyBatis和MyBatis-Plus共存时的冲突问题。
成功解决: Invalid bound statement (not found) 在已经使用mybatis的项目里引入mybatis-plus,结果不能共存的解决
|
Unix Linux Shell
Linux下vi与vim命令使用与区别
Linux下vi与vim命令使用与区别
677 0
|
弹性计算 运维 监控
云服务诊断方案介绍
云服务诊断是阿里云提供的免费运维工具,支持查看云资源的健康状态和实时诊断问题,如网站无法访问、ECS故障等,提供详细修复建议,提升业务可靠性和可用性。用户反馈积极,有效减少故障排查时间,提高工作效率。建议增加诊断结果导出、优化报告可视化及扩展支持实例类型。
|
人工智能 自然语言处理 Java
Spring AI,Spring团队开发的新组件,Java工程师快来一起体验吧
文章介绍了Spring AI,这是Spring团队开发的新组件,旨在为Java开发者提供易于集成的人工智能API,包括机器学习、自然语言处理和图像识别等功能,并通过实际代码示例展示了如何快速集成和使用这些AI技术。
14136 4
Spring AI,Spring团队开发的新组件,Java工程师快来一起体验吧