仅当尚未设置其值时,才在转换为 JSON 时忽略 Java Bean 字段



我有类ABCResponse,isActive是该类的成员。在将 ABCResponse 转换为 JSON 时,我想仅在未明确设置其值时才忽略 isActive 字段。(isActive 是布尔值,我知道默认情况下它的值将是假的,但如果它的值没有明确设置,有什么可能的方法可以忽略它吗?

我不能使用@JSONIgnore,因为即使它的值已经设置,它也会忽略。

公共类 ABCResponse {

private boolean isActive;
private int id;
@JsonProperty("isActive")
public boolean isActive() {
    return isActive;
}
public void setActive(boolean isActive) {
    this.isActive = isActive;
}
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}

}

将其更改为包装器类型 Boolean,以便它可以为 null,并在类级别使用以下注释: @JsonInclude(Include.NON_NULL)@JsonInclude(JsonSerialize.Inclusion.NON_NULL)(如果您使用的是 Jackson 的 2.x+ 版(

第一次使用 is Active 作为布尔值,因此其默认值可以为空。

在类的顶部使用注释:

@JsonInclude(Include.NON_NULL) // in jackson 2.x
in earlier version use:
@JsonSerialize(include=JsonSerialize.Inclusion.ALWAYS) 

替代配置可以是:

mapper.setSerializationInclusion(Include.NON_NULL); // in jackson 2.x
in earlier versions use:
mapper.getSerializationConfig().setSerializationInclusion(Inclusion.NON_NULL);

最新更新