如果字段的值为空,那么如何将Jackson配置为在序列化期间忽略该字段值。
例如:
public class SomeClass {
// what jackson annotation causes jackson to skip over this value if it is null but will
// serialize it otherwise
private String someValue;
}
如果字段的值为空,那么如何将Jackson配置为在序列化期间忽略该字段值。
例如:
public class SomeClass {
// what jackson annotation causes jackson to skip over this value if it is null but will
// serialize it otherwise
private String someValue;
}
当前回答
Jackson 2.x+使用
mapper.getSerializationConfig().withSerializationInclusion(JsonInclude.Include.NON_NULL);
其他回答
这将适用于Spring boot 2.0.3+和Jackson 2.0+
import com.fasterxml.jackson.annotation.JsonInclude;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ApiDTO
{
// your class variable and
// methods
}
在Jackson 2.x中,使用:
@JsonInclude(JsonInclude.Include.NON_NULL)
如果使用Spring,则为全局配置
@Configuration
public class JsonConfigurations {
@Bean
public Jackson2ObjectMapperBuilder objectMapperBuilder() {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.serializationInclusion(JsonInclude.Include.NON_NULL);
builder.serializationInclusion(JsonInclude.Include.NON_EMPTY);
builder.failOnUnknownProperties(false);
return builder;
}
}
如果在Spring Boot中,您可以直接通过属性文件自定义jackson ObjectMapper。
示例application.yml:
spring:
jackson:
default-property-inclusion: non_null # only include props if non-null
可能的值包括:
always|non_null|non_absent|non_default|non_empty
更多信息:https://docs.spring.io/spring-boot/docs/current/reference/html/howto-spring-mvc.html#howto-自定义jackson对象映射器
如果您想将此规则添加到Jackson 2.6+中的所有模型,请使用:
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);