杰克逊:如何在 JSON 序列化中包含空值属性



我正在尝试使用我自己的Java实体类和杰克逊注释来生成JSON响应。在我的 JSON 响应中必须null两个键值,但如果我将它们设置为 null它们就会从 JSON 中消失。不幸的是,我仅限于杰克逊版本 1.9.13。

我已经尝试将值设置为 null ,使用

@JsonSerialize(include = JsonSerialize.Inclusion.ALWAYS)

我的响应实体:

public class Response {
@JsonProperty("data")
private Data data;
@JsonProperty("error")
private Error error;
public Data getData() {
    return data;
}
public void setData(PgSoftAuthData data) {
    this.data = data;
}
public Error getError() {
    return error;
}
public void setError(PgSoftError error) {
    this.error = error;
}
}

我正在尝试生成这样的响应:

Data data = new Data();
data.setName("Name");
data.setTime(null); // This key dissappear from JSON
Response responseSuccess = Response();
responseSuccess.setData(data);
responseSuccess.setError(null); // Error object disappear from JSON

我想得到以下回复:

{
    "data" : {
        "name" : "Name",
        "time" : null
    },
    "error" : null
}

将 JsonInclude 添加到相关类ResponseData

(使用@ThomasFritsch评论更新)

@JsonInclude(JsonInclude.Include.ALWAYS)

指示始终包含属性的值,与属性的值无关。

感谢您的回答!正如我提到的,我仅限于杰克逊 1.9.13,我尝试了以下杰克逊注释的多种组合,但没有成功:

@JsonSerialize(include = JsonSerialize.Inclusion.ALWAYS)

然后我使用了以下内容:

@XmlElement(nillable = true)

错误和名称属性的注释,它有效。现在我得到了正确的 JSON 响应。

错误属性解决方案:

@XmlElement(nillable = true)
@JsonProperty("error")
private Error error;

相关内容

  • 没有找到相关文章

最新更新