Задать вопрос
@VladMystetskyi
Full-stack web developer

Как определить какие поля были изменены при использовании конвертации JSON в POJO?

Имеется веб-сервис, который принимает JSON payload (для PUT метода).
Для конвертации JSON в Java объект используется Jackson.

Есть задача обновлять только те поля, которые присутствуют в JSON (новые значения могут иметь значение null).
Проблема в том, что после конвертации JSON в Java объект, все поля, которые не присутствовали в JSON, имеют значение null и я не могу определить почему они null: потому что их не было в JSON (и я не хочу их обновлять), или потому что они там были с значением null (и я хочу их обновить).

Насколько я понимаю, если поле присутствовало в JSON и у него там было значение null, то Jackson вызовет для этого поля сеттер.
Каким образом я могу узнать какие сеттеры у объекта были вызваны, а какие нет?
Или для подобной задачи есть другие способы решения? На мой взгляд, это достаточно распространенная проблема.
  • Вопрос задан
  • 404 просмотра
Подписаться 1 Оценить 9 комментариев
Пригласить эксперта
Ответы на вопрос 1
@volyihin
Разработчик
Привет! Если это нужно для небольшого количества объектов, то можно написать кастомный сериалайзер в jackson, и самому определить политику работы с каждым полем.

Или второй вариант. Можно написать сериалайзер для конкретного типа поля. Например для String. Чтобы он сеттил какое-нибудь значение по умолчанию, если не находил такого в json.

Все это можно найти на их гитхабе в документации.

https://github.com/FasterXML/jackson-docs/blob/mas...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы