Jackson如何配置,以在序列化期间忽略某个字段的值,如果该字段的值为null。
例如:
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;
}
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
对于Jackson 2.5,请使用:
@JsonInclude(content=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;
}
}
null
`,最终在JSON中也会包含这个空对象。mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
[{myObject},null]
要得到这个:
[{myObject}]
可以这样做:
mapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
@Override
public void serialize(Object obj, JsonGenerator jsonGen, SerializerProvider unused)
throws IOException
{
//IGNORES NULL VALUES!
}
});
environment.getObjectMapper()
检索由Jersey使用的ObjectMapper
。com.fasterxml.jackson.databind.annotation.JsonSerialize
已被弃用。只需将导入替换为
import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
并将其用作
@JsonSerialize(include=Inclusion.NON_NULL)
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
public class XYZ {
protected String field1;
protected String field2;
}
对于非空值(在getter/类级别上)-
@JsonSerialize(include=JsonSerialize.Inclusion.NON_EMPTY)
@JsonInclude(JsonInclude.Include.NON_NULL)
private String someString;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private String someString;
someString
为null,则在两种情况下都会被忽略。
如果someString
为"",则仅在第二种情况下被忽略。List = null
或List.size() = 0
也是一样。@JsonInclude(Include.NON_NULL)
class Foo
{
String bar;
}
@JsonInclude(Include.NON_EMPTY)
class Foo
{
String bar;
}
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
属性已被弃用,我们需要使用以下替代方法:@JsonInclude(Include.NON_NULL)
public class MyClass
@JsonInclude(Include.NON_EMPTY)
或者 @JsonInclude(Include.NON_NULL)
builder.serializationInclusion(JsonInclude.Include.NON_EMPTY);
。JacksonInclude文档 - Olgun Kaya