📜  如果为 null,jackson 忽略值 - Java (1)

📅  最后修改于: 2023-12-03 14:53:22.315000             🧑  作者: Mango

如果为 null,jackson 忽略值 - Java

在使用 Jackson 序列化 Java 对象时,有时希望在某些情况下忽略 null 值,以减少 JSON 的大小或避免不必要的嵌套。

忽略 null 值

可以使用 @JsonInclude 注解来配置 Jackson 忽略 null 值。

public class User {
    private String name;
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Integer age;
    // getters and setters
}

在上面的例子中, age 字段配置了 @JsonInclude 注解,指明只有当 age 不为 null 时才会被序列化输出。

在序列化时,使用 ObjectMapper 将 Java 对象转换为 JSON 字符串:

ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(new User("Alice", null));
System.out.println(json); // {"name":"Alice"}

从上面的输出可以看到,只有 name 字段被输出了,而 age 被忽略了。

全局配置

可以在 Jackson 的全局配置中设置默认的 JsonInclude.Include

ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);

这个配置会影响所有 Java 对象在序列化时的行为。

参考资料