私は現在、WebアプリケーションからJSONオブジェクトを生成するために不変ライブラリを使用しています。 this章を見てみるとなぜ不変のnullが推奨されないのですか?
、最初の行は言う:
NULL可能な属性の使用は推奨されません。
だから私の質問は次のとおりです。
1)なぜ?ヌルオブジェクトの何が問題になっていますか?
2)項目はそれほど失敗するクラス分けビルダーコードを使用して、nullであるか、ない場合、私はthirdyオブジェクトのラッパーを使用していると私は知っていないものであれば:
MyImmutableWrapperObject
.builder().
.mobile(input.getMobile()) // don't know if null or not
.build();
が任意の最適あり溶液?
EDIT:
@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:
私はちょうどオプションも存在する場合、実際の値を表示しませんが、それだけで真/偽の値を表示するので、私はそれを必要としないことがわかりました。
あるのでpossibile方法も考えられます。 ビルダーbuilder = ImmutableAccount \t \t \t \t .builder() if(input.getMobile()!= null)builder.mobile(input.getMobile()); builder.build() –
@FabrizioStellatoを返すことができます - はい。あなたのケースでは、この場合は 'Optional.empty()'を格納することができます。あるいは、ビルダーが代わりにこのヌルを使って何かをすることさえあります - それは依存しています。 – Eugene
私の編集した質問を参照してください –