我可以使用 Jackson @JsonView 序列化 属性 吗?

Can I serialize a property using a Jackson @JsonView?

我的 REST 中有一个复杂的 class API:

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

我还有另一个 class,其中包含 Complicated:

的集合
class HasComplications {
    String description

    List<Complicated> complications
}

当我序列化我的 HasComplications(使用 Spring MVC)时,我只想要每个 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
}

但是,当我在 complications 属性 中传递地序列化 Complicated 时,Jackson 序列化了所有属性。有没有办法让我声明性地告诉它 "use this view when serializing this property"?

class HasComplications {
    String description

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

目前没有这样的功能。

您可以做的一件事是在 属性 上使用 @JsonIgnoreProperties。 但是,我认为这只适用于 POJO 值而不适用于 Lists 或 Maps 的内容,因此这对您没有帮助。 提交问题以使结构化类型工作可能有意义。