Я использую jackson-databind-2.11.0 для десериализации и сопоставления объекта с классом Bean. Мы переместили проект в микросервис и, следовательно, должны были провести рефакторинг проекта.
Ранее поведение: отсутствующее свойство списка создавало пустой список для десериализованного объекта
После рефакторинга: отсутствующее свойство списка создает значение Null для атрибута, т.е.
com.fasterxml.jackson.databind.deser.BeanDeserializer#Object bean = this._valueInstantiator.createUsingDefault(ctxt);
например: образец боба
Class A<T>{
String id;
List<T> att1;
List<T> att2;
}
Строка Json: {"A": { "id" : "XYZ"}}
Ранее десериализованный объект выглядел так:
class A {
id : XYZ,
att1 : [],
att2 : [],
}
Теперь после рефакторинга его
class A {
id : XYZ,
att1 : null,
att2 : null,
}
Я попытался исправить это по ссылке:Десериализатор Джексона - изменить ноль коллекция, чтобы очистить одну
objectmapper.setDefaultSetterInfo(JsonSetter.Value.forContentNulls(Nulls.DEFAULT));
objectmapper.configOverride(List.class).setSetterInfo(JsonSetter.Value.forContentNulls(Nulls.DEFAULT));
objectmapper.setDefaultSetterInfo(JsonSetter.Value.forValueNulls(Nulls.DEFAULT));
objectmapper.configOverride(List.class).setSetterInfo(JsonSetter.Value.forValueNulls(Nulls.DEFAULT));
но не добился успеха.
Любая помощь приветствуется.