Допустим, я использую Джексона для сериализации и десериализации POJO.У меня есть несколько классов, подобных этому:
class Foo {
String field1;
Bar field2;
// ...
Baz baz;
}
Где baz
- это большой объект JSON, который я получаю из внешней системы.Я хочу использовать Foo
тремя различными способами:
- Сериализовать
Foo
и включать baz
, даже не пытаясь разобрать его, как если бы я объявил его как @JsonRawValue String baz
. - Pretty-print
Foo
и включают baz
точно так же, как я получил его, за исключением довольно напечатанного, как если бы я объявил его как Map<String, Object> baz
. - Передача
Foo
в мою бизнес-логикус десериализацией baz
в POJO, как в приведенном выше коде.
Один из способов сделать это - объявить три класса с полем baz
, объявленным тремя различными способами.Я также мог бы объединить 2) и 3) в один класс с @JsonAnySetter
и @JsonAnyGetter
, чтобы захватить любые свойства, которые я не распознаю.
Но есть ли чистый способ поддержки всех трех вариантов использованиявыше при объявлении только одного Foo
класса?