You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jackson反序列化POJO时抛出无法识别device_id异常,加@JsonProperty仍报错

问题排查与解决步骤
  • 第一步:排查Jackson注解包导入错误(最高发原因)
    确认所有Jackson相关注解(@JsonProperty、@JsonIgnoreProperties、@JsonFormat)均导入自com.fasterxml.jackson.annotation包,而非旧版org.codehaus.jackson包。如果混用不同版本的Jackson依赖,注解会完全失效,导致@JsonProperty("device_id")字段映射不生效、@JsonIgnoreProperties(ignoreUnknown = true)忽略未知字段的配置也不生效,最终抛出你遇到的字段不识别异常。
  • 第二步:修复POJO的语法错误
    你提供的LogMdto类中重复定义了id字段,先后出现了两次private String id;的声明,这会干扰类加载和Jackson的字段扫描逻辑,请删掉其中一个重复的id字段定义。
  • 第三步:确认ObjectMapper版本匹配
    确认你使用的ObjectMapper导入自com.fasterxml.jackson.databind.ObjectMapper,和所有Jackson注解属于同一套依赖,不要新旧版本混用。
  • 第四步:临时全局配置验证
    如果上述排查都没有问题,可以给ObjectMapper添加全局忽略未知字段的配置,验证是否为类注解失效问题:
    ObjectMapper mapper = new ObjectMapper();
    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    
    添加配置后如果可以正常反序列化,说明类上的@JsonIgnoreProperties注解确实没有生效,回到第一步重新排查依赖和包导入问题。

附加注意事项

你的date字段的setter方法参数为String类型,Jackson默认会按照字段类型匹配setter参数,若后续出现date字段反序列化异常,可以给setDate方法添加@JsonSetter注解,或者直接将date字段类型改为LocalDateTime,Jackson原生支持ISO格式的LocalDateTime反序列化,不需要自定义setter逻辑。

内容的提问来源于stack exchange,提问作者Sergio B.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 15:15:05