我的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
] }
}
当我直接序列化Complicated
时,我可以使用@JsonView
告诉Jackson哪些属性要序列化:
class Complicated {
@JsonView(Views.Snippet) String foo
@JsonView(Views.Snippet) Integer bar
Instant baz
...
// lots more
}
但是,当我在Complicated
属性中传递序列化complications
时,Jackson序列化了所有属性。有没有办法让我以声明方式告诉它“在序列化这个属性时使用这个视图”?
class HasComplications {
String description
@UseJsonView(Views.Snippet)
List<Complicated> complications
}
答案 0 :(得分:2)
目前没有这样的功能。
您可以做的一件事是在财产上使用@JsonIgnoreProperties
。
但是,我认为这只适用于POJO值,而不适用于List
或Map
的内容,所以这对您没有帮助。
提交一个问题以使其适用于结构化类型可能是有意义的。