【发布时间】:2016-05-30 08:54:30
【问题描述】:
我想序列化特定字段或类的空值。
在 GSON 中,serializeNulls() 选项适用于整个 JSON。
例子:
class MainClass {
public String id;
public String name;
public Test test;
}
class Test {
public String name;
public String value;
}
MainClass mainClass = new MainClass();
mainClass.id = "101"
// mainClass has no name.
Test test = new Test();
test.name = "testName";
test.value = null;
mainClass.test = test;
使用 GSON 创建 JSON:
GsonBuilder builder = new GsonBuilder().serializeNulls();
Gson gson = builder.create();
System.out.println(gson.toJson(mainClass));
当前输出:
{
"id": "101",
"name": null,
"test": {
"name": "testName",
"value": null
}
}
期望的输出:
{
"id": "101",
"test": {
"name": "testName",
"value": null
}
}
如何达到想要的输出?
首选解决方案应具有以下属性:
- 不默认序列化空值,
- 序列化具有特定注释的字段的空值。
【问题讨论】:
-
@DatoMumladze 我更新了我的问题
-
我在 Gson 中找不到此功能。这是一些有趣的link 或者您可以使用Jackson 将对象序列化为json,并使用此注释
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)排除特定字段的空值