我有类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);