-1

REST API に複雑なクラスがあります。

class Complicated {
    String foo
    Integer bar
    Instant baz
    ...
    // lots more
}

次のコレクションを含む別のクラスもありますComplicated

class HasComplications {
    String description

    List<Complicated> complications
}

(Spring MVC を使用して)シリアライズするときはHasComplications、それぞれのスニペットのみが必要ですComplicated

{
    description: "hello world",
    complications: [ {
      foo: "foo1",
      bar: 42
    ] }
}

を直接シリアル化するComplicated場合、 を使用@JsonViewして、シリアル化するプロパティのセットを Jackson に伝えることができます。

class Complicated {
    @JsonView(Views.Snippet) String foo
    @JsonView(Views.Snippet) Integer bar
    Instant baz
    ...
    // lots more
}

ただし、プロパティでComplicated推移的にシリアル化するcomplicationsと、ジャクソンはすべてのプロパティをシリアル化します。「このプロパティをシリアル化するときにこのビューを使用する」と宣言的に伝える方法はありますか?

class HasComplications {
    String description

    @UseJsonView(Views.Snippet)
    List<Complicated> complications
}
4

1 に答える 1

2

現在、そのような機能はありません。

あなたができることの1つは@JsonIgnoreProperties、プロパティで使用することです。ただし、これは POJO 値に対してのみ機能し、Lists またはMaps の内容に対しては機能しないと思うので、ここでは役に立ちません。構造化された型でこれを機能させるために問題を報告することは理にかなっているかもしれません。

于 2017-05-05T05:18:24.283 に答える