Джексон: свойство может быть необработанным, произвольным объектом или POJO - PullRequest
0 голосов
/ 23 ноября 2018

Допустим, я использую Джексона для сериализации и десериализации POJO.У меня есть несколько классов, подобных этому:

class Foo {
    String field1;
    Bar field2;
    // ...
    Baz baz;
}

Где baz - это большой объект JSON, который я получаю из внешней системы.Я хочу использовать Foo тремя различными способами:

  1. Сериализовать Foo и включать baz, даже не пытаясь разобрать его, как если бы я объявил его как @JsonRawValue String baz.
  2. Pretty-print Foo и включают baz точно так же, как я получил его, за исключением довольно напечатанного, как если бы я объявил его как Map<String, Object> baz.
  3. Передача Foo в мою бизнес-логикус десериализацией baz в POJO, как в приведенном выше коде.

Один из способов сделать это - объявить три класса с полем baz, объявленным тремя различными способами.Я также мог бы объединить 2) и 3) в один класс с @JsonAnySetter и @JsonAnyGetter, чтобы захватить любые свойства, которые я не распознаю.

Но есть ли чистый способ поддержки всех трех вариантов использованиявыше при объявлении только одного Foo класса?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...