Jackson 序列化时忽略 null 或空字符串
当我们通过 Jackson 将某个对象转换成 JSON 字符串时,如果对象属性有很多我们不需要的 null 值,全部转换会浪费很大的空间,例如:
{
"id": 77,
"number": 1,
"title": "枫霜尽",
"type": 0,
"name": null,
"age": null,
"address": null
}
转换之后结果如下:
{
"id": 77,
"number": 1,
"title": "枫霜尽",
"type": 0
}
如果我们不需要上面 name、age 和 address 属性的 null 值,可以有如下两种方式:
-
在使用
@JsonInclude(JsonInclude.Include.NON_NULL)注解
将该注解放在属性上,如果该属性为 null 则不参与序列化;
如果放在类上边,那对这个类的全部属性起作用参数:
Include.Include.ALWAYS 默认,全部序列化
Include.NON_DEFAULT 属性为默认值不序列化
Include.NON_EMPTY 属性为空(“”)或者为 NULL 都不序列化
Include.NON_NULL 属性为 NULL 不序列化 -
在代码上对 ObjectMapper 对象进行设置,通过该方法对 ObjectMapper 对象进行设置,所有序列化的对象都将按改规则进行序列化
参数与上面一样
ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(Include.NON_NULL);