Могу ли я сериализовать свойство с помощью Jackson @JsonView?
У меня есть сложный класс в моем 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
сказать Джексону, какой набор свойств сериализовать:
class Complicated {
@JsonView(Views.Snippet) String foo
@JsonView(Views.Snippet) Integer bar
Instant baz
...
// lots more
}
Тем не менее, когда я сериализую Complicated
транзитивно в complications
собственность, Джексон сериализует все свойства. Есть ли способ для меня декларативно сказать ему "использовать это представление при сериализации этого свойства"?
class HasComplications {
String description
@UseJsonView(Views.Snippet)
List<Complicated> complications
}
1 ответ
В настоящее время такой функциональности нет.
Одна вещь, которую вы можете сделать, это использовать @JsonIgnoreProperties
на имущество. Тем не менее, я думаю, что это будет работать только для значений POJO, а не для содержимого List
с или Map
Так что это не поможет вам здесь. Подать вопрос, чтобы сделать эту работу для структурированных типов может иметь смысл.