- Ввод принимается в виде Map.
В коде необходимо использовать Джексона для преобразования входных данных в POJO. Некоторые поля POJO содержат строки и перечисления. Для этих полей значения карты — это просто простые строки или результат вызова .toString() для значения перечисления. Другие поля содержат другие POJO, списки POJO и т. д. Они существуют в виде объектов JSON на карте. - Пользовательский код должен быть сведен к минимуму. В идеале аннотации в классах POJO должны содержать всю информацию, необходимую Джексону для выполнения своей работы. (Если в класс POJO добавляется новое поле с соответствующими аннотациями, оно должно работать без дополнительных изменений кода.)
- Код должен использовать ObjectMapper, предоставляемый с помощью внедрения зависимостей. Это ограничивает места в коде, где можно использовать ObjectMapper. (Например, он недоступен в методе @JsonSetter класса POJO.)
Код: Выделить всё
public class MyPojoConverter {
private final ObjectMapper objectMapper;
public MyPojoConverter(ObjectMapper objectMapper) {
this.objectMapper = objectMapper;
}
public MyPojo deserialize(Map input) {
return objectMapper.convertValue(input, MyPojo.class);
}
}
Код: Выделить всё
java.lang.IllegalArgumentException: Cannot construct instance of `MyOtherPojo` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value (...
Подробнее здесь: https://stackoverflow.com/questions/792 ... ng-jackson