只是为了扩展其他答案 - 如果您需要控制每个字段的空值的省略,请注释有问题的字段(或者注释字段的“getter”)。
示例 - 此处仅在 JSON 为 null 时从 JSON 中省略。 将始终包含在 JSON 中,无论它是否为空。fieldOne
fieldTwo
public class Foo {
@JsonInclude(JsonInclude.Include.NON_NULL)
private String fieldOne;
private String fieldTwo;
}
若要将类中的所有 null 值作为默认值省略,请对该类进行批注。如有必要,仍可使用每字段/getter 批注来覆盖此默认值。
示例 - 此处,如果它们分别为 null,则将从 JSON 中省略,因为这是类注释设置的默认值。 但是将覆盖默认值,并且由于字段上的注释,将始终包括在内。fieldOne
fieldTwo
fieldThree
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Foo {
private String fieldOne;
private String fieldTwo;
@JsonInclude(JsonInclude.Include.ALWAYS)
private String fieldThree;
}
更新
以上是杰克逊2。对于早期版本的 Jackson,您需要使用:
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
而不是
@JsonInclude(JsonInclude.Include.NON_NULL)
如果此更新有用,请在下面对ZiglioUK的答案投赞成票,它指出了较新的Jackson 2注释,早在我更新我的答案以使用它之前!