Как объединить JsonIgnoreProperties с суперклассом? - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть два класса:

@JsonIgnoreProperties(values="foo", allowGetters = true)
public class Parent {
  String foo;
  String bar;
}

@JsonIgnoreProperties(values="alice", allowGetters = true)
public class Child extends Parent {
  String alice;
  String bob;
}

В результате получается класс Child, где атрибут foo не игнорируется (для настройки). Поэтому я предполагаю, что JsonIgnoreProperties из Child переопределяет JsonIgnoreProperties из Parent.

Но мне нужен способ слияния JsonIgnoreProperties из Child и JsonIgnoreProperties из Parent. Как это сделать? ТИА!

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Я решил проблему с кастомом BeanDeserializerModifier.

см. Здесь: Джексон Динамическая фильтрация свойств при десериализации

0 голосов
/ 09 ноября 2018

Поскольку вы переопределили аннотацию в дочернем классе, она переопределяет аннотацию, определенную в Parent.

Я знаю 2 способа, которыми вы могли бы решить эту проблему, оба из которых не являются прямыми.

  1. В классе Child вместо @JsonIgnoreProperties используйте @JsonIgnore в Получателях свойств, которые вы хотели бы игнорировать. Это позволит вам не перезаписывать родительскую аннотацию.
  2. Если вы все еще хотите использовать @JsonIgnoreProperties, то добавьте пользовательский JsonFilter и обработайте аннотации вручную во время выполнения ( Reflections ), просмотрев любую из иерархических структур. родительские классы имеют JsonIgnoreProperties, а затем пропускают назначение.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...