如果字段的值为空,那么如何将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;
}
当前回答
如果使用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;
}
}
其他回答
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonInclude(JsonInclude.Include.NON_EMPTY)
应该起作用。
Include.NON_EMPTY表示如果属性的值不为null且不为空,则该属性将被序列化。Include.NON_NULL表示如果属性的值不为空,则该属性被序列化。
这个问题我们有很多答案。这个答案在某些情况下可能有用如果要忽略空值,可以在类级别使用NOT_null。如下所示
@JsonInclude(Include.NON_NULL)
class Foo
{
String bar;
}
有时您可能需要忽略空值,例如您可能已经初始化了arrayList,但该列表中没有元素
@JsonInclude(Include.NON_EMPTY)
class Foo
{
String bar;
}
对于Jackson 2.5使用:
@JsonInclude(content=Include.NON_NULL)
如果您想将此规则添加到Jackson 2.6+中的所有模型,请使用:
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
案例一
@JsonInclude(JsonInclude.Include.NON_NULL)
private String someString;
案例二
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private String someString;
如果someString为空,则在这两种情况下都将忽略它。如果someString为“”,则只能在第二种情况下忽略。
对于List=null或List.size()=0也是如此