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

Jackson XML构建器配置及排除空字段序列化问题咨询

Jackson XML 2.15序列化POJO时排除空字段的实现方法及配置指引

一、排除空字段的实现方式

Jackson XML 2.15完全支持序列化时排除空字段,和JSON的配置逻辑一致,有以下几种实现方式:

1. 全局配置(推荐)

通过XmlMapper的构建器统一设置,对所有序列化生效:

import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.json.JsonInclude;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;

XmlMapper xmlMapper = XmlMapper.builder()
    // 排除Map中的null值
    .disable(SerializationFeature.WRITE_NULL_MAP_VALUES)
    // 全局排除所有null值字段
    .defaultPropertyInclusion(JsonInclude.Include.NON_NULL)
    .build();

如果需要更精细的控制,也可以使用NON_EMPTY代替NON_NULL,它会同时排除null值和空集合、空字符串等空内容。

2. 类级别注解

在目标POJO类上添加@JsonInclude注解,仅对该类的序列化生效:

import com.fasterxml.jackson.databind.json.JsonInclude;

@JsonInclude(JsonInclude.Include.NON_NULL)
public class YourPojo {
    private String field1;
    private Integer field2;
    // getter、setter方法
}

3. 字段级别注解

在特定字段上添加@JsonInclude注解,仅排除该字段的null值:

public class YourPojo {
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String field1;
    private Integer field2;
    // getter、setter方法
}

二、构建器风格支持的配置选项

XmlMapper.builder()继承自Jackson核心的ObjectMapper.Builder,支持的核心配置选项包括:

  • 序列化/反序列化特性开关:比如enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)、disable(SerializationFeature.FAIL_ON_EMPTY_BEANS)等
  • 默认属性包含规则:通过defaultPropertyInclusion()设置全局字段包含策略
  • 模块注册:通过registerModule()添加扩展模块(如Jdk8Module、JavaTimeModule等)
  • 命名策略配置:通过propertyNamingStrategy()设置字段名转换规则(如驼峰转下划线)
  • 日期与时区配置:通过dateFormat()、timeZone()统一设置日期序列化格式
  • 注解支持配置:通过annotationIntrospector()自定义注解解析逻辑

这些配置和JSON的ObjectMapper构建器完全兼容,因为XmlMapper本质是适配XML格式的ObjectMapper子类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 07:52:12