在转换为 JSON 时忽略 java bean 字段,仅当它的值尚未设置时
Ignore a java bean field while converting into JSON Only if it's value hasn't been set
我有 class ABCResponse 并且 isActive 是 class 的成员。在将 ABCResponse 转换为 JSON 时,我只想忽略 isActive 字段,前提是它的值尚未明确设置。 (isActive 是布尔值,我知道默认情况下它的值为 false,但是如果它的值没有明确设置,有没有可能忽略它的方法?)
我不能使用@JSON忽略,因为它会忽略即使它的值已经设置。
public class 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
以便它可以为空,并在 class 级别使用以下注释:@JsonInclude(Include.NON_NULL)
或 @JsonInclude(JsonSerialize.Inclusion.NON_NULL)
如果您正在使用 Jackson
的 2.x+ 版本
首先将isActive作为布尔值,使其默认值为null。
在 class 顶部使用注释:
@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);
我有 class ABCResponse 并且 isActive 是 class 的成员。在将 ABCResponse 转换为 JSON 时,我只想忽略 isActive 字段,前提是它的值尚未明确设置。 (isActive 是布尔值,我知道默认情况下它的值为 false,但是如果它的值没有明确设置,有没有可能忽略它的方法?)
我不能使用@JSON忽略,因为它会忽略即使它的值已经设置。
public class 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
以便它可以为空,并在 class 级别使用以下注释:@JsonInclude(Include.NON_NULL)
或 @JsonInclude(JsonSerialize.Inclusion.NON_NULL)
如果您正在使用 Jackson
首先将isActive作为布尔值,使其默认值为null。
在 class 顶部使用注释:
@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);