У меня есть объект, который содержит коллекцию как атрибут:
public class Entity {
@JsonProperty(value="homes")
@JsonDeserialize(as=HashSet.class, contentAs=HomeImpl.class)
private Collection<Home> homes = new ArrayList<Home>();
}
Если запрос содержит null как свойство запроса:
{
"homes": null
}
тогда для домов установлено значение null. То, что я хочу сделать, - это установить дома для пустого списка. Нужно ли мне писать специальный десериализатор для этого или есть ли для коллекций? То, что я пробовал, - это десериализатор, но он выглядит уродливым (он не является общим и использует реализацию вместо интерфейса).
public class NotNullCollectionDeserializer extends JsonDeserializer<Collection<HomeImpl>> {
@Override
public Collection<HomeImpl> deserialize(final JsonParser jsonParser, final DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
return jsonParser.readValueAs(new TypeReference<Collection<HomeImpl>>(){});
}
@Override
public Collection<HomeImpl> getNullValue() {
return Collections.emptyList();
}
}
Так мало вопросов:
- Есть ли какое-то свойство jackson, которое изменяет значение null на пустую коллекцию во время десериализации?
- Если нет для первой точки - мне нужно написать десериализатор для этого? Если да, могу ли я написать общий текст?