我目前使用Immutable庫來從我的web應用程序中生成JSON對象。爲什麼不可變的null不鼓勵?
在this章來看,第一行說:
使用可空的屬性是不鼓勵。
所以我的問題是:
1)爲什麼?空對象有什麼問題?
2)我使用的是什麼,如果thirdy對象的包裝,我不知道,如果項目爲空或不是,所以使用分級生成器生成代碼將失敗:
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
},
我如何能徹底清除空字段?
我讀this,但它使用gson.toJson返回一個String對象,這不是我的理想方式。
POSTEDIT:
我剛剛發現,即使目前可選沒有顯示出真正的價值,但它只是顯示真/假值,所以我並不需要它。
因此,一個不可能性的方式可能是也: 生成器builder = ImmutableAccount \t \t \t \t \t .builder() if(input.getMobile()!= null)builder.mobile(input.getMobile()); return builder.build() –
@FabrizioStellato它可能是 - 是的。在這種情況下,存儲'Optional.empty()'可能是正確的。或者甚至建設者用這個null來做一些事情 - 這取決於。 – Eugene
查看我編輯的問題 –