Включение сериализации Jackson JSON для игнорирования только нулевых полей и пустых коллекций

Недавно мы перешли с Jackson json 2.8.2 на 2.9.4 и видим серьезные изменения в поведении. Мы используем JDK 1.8.

Ранее мы установили включение сериализации как NON_DEFAULT на уровне сопоставителя объектов, и все работало нормально.

Теперь, после изменения на 2.9.2, NON_DEFAULT игнорирует все значения по умолчанию, такие как логическое значение false, целое число 0,.... Это нарушает наши тестовые примеры.

Наше требование состоит в том, чтобы игнорировать только нулевые поля и пустые поля, например возвращаемые как [].

Но мы по-прежнему хотим не игнорировать пустые строки, например test = ""

Мы пробовали non_empty, non_absent, игнорируя каждое поле (null, [], "").

Можете ли вы предложить, как мы можем настроить поведение сериализации в соответствии с нашими требованиями? Дайте мне знать, если вам нужна дополнительная информация.


person Ram    schedule 23.02.2018    source источник


Ответы (1)


Пара способов:

  1. Укажите другую настройку для типа String.class: посмотрите на ObjectMapper.configOverrides(String.class); есть сеттер для JsonInclude.Value (тип, который имеет различные фабричные методы). Вы можете установить это как JsonInclude.Include.NON_NULL (или ALWAYS), даже если по умолчанию это что-то другое
  2. Зарегистрируйте собственный сериализатор для String, переопределите/переопределите его метод isEmpty(SerializerProvider, String), чтобы НЕ рассматривать пустую строку как empty в целях исключения
person StaxMan    schedule 17.04.2018