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

为何ObjectMapper使用JsonInclude.NON_EMPTY序列化时会移除null字段?

为什么Jackson设置JsonInclude.NON_EMPTY时null字段也会被忽略?

这是因为**JsonInclude.NON_EMPTY的规则本质上是JsonInclude.NON_NULL的超集**——它不仅会忽略空值(空字符串、空集合/数组、空Map等),同时也会忽略值为null的字段。

Jackson对NON_EMPTY的判断逻辑是:只要字段值满足以下任一条件,就会在序列化时被忽略:

  • 值为null
  • 是长度为0的字符串
  • 是空集合(List、Set等)或空数组
  • 是空Map
  • 其他被Jackson判定为“空/无意义”的类型

回到你的示例代码:

  • middleName是空字符串,符合NON_EMPTY的忽略条件,被排除
  • lastName是null,同样符合NON_EMPTY的忽略条件,被排除
  • 只有firstName有有效非空值,所以最终序列化结果仅保留该字段

如果想要保留null字段、只排除空字符串/空集合这类值,你需要配置自定义包含规则,或者使用JsonInclude.NON_NULL配合额外的序列化过滤器来处理空值场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:52:08