【问题标题】:Can I serialize a property using a Jackson @JsonView?我可以使用 Jackson @JsonView 序列化属性吗?
【发布时间】:2017-10-03 04:10:37
【问题描述】:

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

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

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

class HasComplications {
    String description

    List<Complicated> complications
}

当我序列化我的HasComplications(使用 Spring MVC)时,我只想要每个 Complicated 的 sn-p:

{
    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 会序列化所有属性。有没有办法让我声明性地告诉它“在序列化这个属性时使用这个视图”?

class HasComplications {
    String description

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

【问题讨论】:

    标签: java json jackson json-view


    【解决方案1】:

    目前没有这样的功能。

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

    【讨论】:

    • 前段时间好像有类似的功能请求,我已经评论过了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多