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

Jackson是否支持原生方式阻止枚举类型的Null反序列化?

Jackson JSON反序列化中枚举字段Null值的处理逻辑

默认情况下,Jackson会将JSON中的"myEnum": null直接映射到Java类的枚举字段,最终该字段值为null——因为Java枚举类型本身允许为null,Jackson默认不对这种情况做拦截。

Jackson提供两种原生方式阻止Null被识别为枚举的有效值,无需自行编写复杂验证逻辑:

  • 全局配置:通过ObjectMapper关闭DeserializationFeature.ACCEPT_NULL_FOR_ENUMS特性。示例代码:
    ObjectMapper mapper = new ObjectMapper();
    mapper.disable(DeserializationFeature.ACCEPT_NULL_FOR_ENUMS);
    
    配置后,所有枚举字段遇到JSON中的null值时,都会抛出JsonMappingException异常。
  • 字段级配置:如果只需针对特定枚举字段生效,可在字段上添加@JsonSetter(nulls = Nulls.FAIL)注解。示例:
    public class MyClass {
        @JsonSetter(nulls = Nulls.FAIL)
        private MyEnum myEnum;
    }
    
    该字段遇到null值时会触发异常,其他枚举字段不受影响。

如果不使用上述原生配置,也可以通过自定义枚举反序列化器,在反序列化逻辑中手动检查值是否为null,并抛出异常实现验证。

内容的提问来源于stack exchange,提问作者user856358

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:24:56