我目前正在使用不可变库从我的 Web 应用程序生成 JSON 对象。
看这一章,第一行说:
不鼓励使用可为空的属性。
所以我的问题是:
1)为什么?空对象有什么问题?
2) 如果我使用的是第三方对象的包装器并且我不知道 item 是否为空,那么使用分类构建器代码将失败怎么办:
MyImmutableWrapperObject
.builder().
.mobile(input.getMobile()) // don't know if null or not
.build();
有没有最优解?
编辑:
@JsonProperty("mobile")
public abstract Optional<String> mobile();
...
// composing builder
if (input.getMobile() != null)
builder.mobile(input.getMobile());
生成的json是:
"mobile": {
"present": false
},
如何完全删除空字段?
我读了这个,但是它使用 gson.toJson 返回一个 String 对象,这不是我想要的方式。
后编辑:
我刚刚发现Optional即使存在也不会显示真正的价值,但它只是显示真/假值,所以我不需要它。