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
相关产品推荐
相关产品推荐

