java - Jackson:如何在 JSON 序列化中包含空值属性
问题描述
我正在尝试使用我自己的 Java 实体类和 Jackson 注释来生成 JSON 响应。我的 JSON 响应中必须有两个键值null
,但如果我将它们设置为null
它们将从 JSON 中消失。不幸的是,我仅限于 Jackson 版本 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
}
解决方案
谢谢您的回答!正如我所提到的,我仅限于 Jackson 1.9.13,并且我尝试了多种组合以及以下 Jackson 注释但未成功:
@JsonSerialize(include = JsonSerialize.Inclusion.ALWAYS)
然后我使用了以下内容:
@XmlElement(nillable = true)
错误和名称属性上的注释,它可以工作。现在我得到了正确的 JSON 响应。
错误属性解决方案:
@XmlElement(nillable = true)
@JsonProperty("error")
private Error error;
推荐阅读
- python - 当我运行获取请求时,我不断收到 AttributeError: 'set' object has no attribute 'items'?
- css - 网格区域之间的间距
- mysql - 根据第三张表计算 2 张表的结果
- javascript - Webpacker 不适用于 jquery 库
- polygon - 使用 pyvips 绘制多条折线
- flutter - 如何显示导航栏并仅显示在 Flutter 中的特定页面上?
- kotlin - 从 kotlin 多平台项目创建 fat jar
- mapbox-gl-js - 如何在 Deck.gl/react-map-gl 中显示建筑楼层
- c# - 如何使用导航服务将参数从视图模型正确传递到另一个视图模型?
- string - 如何在 TCL 列表中获取“多词”、“单词”和空字符串?我得到一个“非统一”花括号格式化字符串的列表