私はオプションのフィールドを持つJavaクラスを持っています。 JSONをJackson 2.8.3(Spring Web 4.3.3から呼び出されました)を使用してクラスをシリアライズしています。ジャクソンのシリアル化中にOptional.emptyフィールドをスキップする方法は?
オプションが空の場合はシリアライザにフィールドをスキップさせ、含まれている場合はシリアル化したいと考えています。私は2つのオブジェクトのリストを探していた結果の例:ここでは
[
{
"id": 1,
"foo": "bar"
},
{
"id": 2,
}
]
オプションfooが、私が取得することで、2
代わりにidを持つオブジェクトの空です:
[
{
"id": 1,
"foo": {
"present": true
}
},
{
"id": 2,
"foo": {
"present": false
}
}
]
これは私が
@JsonInclude(JsonInclude.Include.NON_ABSENT)
public Optional<String> getFoo() { ...
のようにクラスに「バー」フィールドに注釈を付けても、結果がどのwaがありますですy Jacksonの注釈やカスタムシリアライザを使用した最初のリストのような結果を得ることができますか?
「オプション」をBeanのフィールドとして使用することは、一般的にBad Idea™です。 – biziclop
なぜそれは問題であると考えられますか? –
このような用途には設計されていませんでした。これは非常に微妙な意味の違いですが、フィールドの場合、 'null'は単なる別の値とみなされます。一方、ライブラリのAPIでメソッドを設計している場合は、値を返さないことがあるため、 'Optional'を使用することを強調したいかもしれません。もっと見る[ここ](http://stackoverflow.com/questions/26327957/should-java-8-getters-return-optional-type/26328555#26328555) – biziclop