我可以使用 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 值而不适用于 List
s 或 Map
s 的内容,因此这对您没有帮助。
提交问题以使结构化类型工作可能有意义。
我的 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 值而不适用于 List
s 或 Map
s 的内容,因此这对您没有帮助。
提交问题以使结构化类型工作可能有意义。