-1

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

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

我还有另一个包含以下集合的类Complicated

class HasComplications {
    String description

    List<Complicated> complications
}

当我序列化我的HasComplications(使用 Spring MVC)时,我只想要一个片段Complicated

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

当我直接序列化 aComplicated时,我可以@JsonView用来告诉 Jackson 要序列化的属性集:

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

但是,当我Complicatedcomplications属性中传递序列化时,杰克逊会序列化所有属性。有没有办法让我声明性地告诉它“在序列化这个属性时使用这个视图”?

class HasComplications {
    String description

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

1 回答 1

2

目前没有这样的功能。

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

于 2017-05-05T05:18:24.283 回答