Mam podmiot, który zawiera kolekcję jako atrybut:Jackson Deserializator - zmień zerowy kolekcji opróżnić jeden
public class Entity {
@JsonProperty(value="homes")
@JsonDeserialize(as=HashSet.class, contentAs=HomeImpl.class)
private Collection<Home> homes = new ArrayList<Home>();
}
Jeżeli wniosek zawiera null jako Nieruchomości:
{
"homes": null
}
następnie domów jest ustawiona na null . Co chcę zrobić, to ustawić domy na pustą listę. Czy muszę napisać specjalny deserializator dla tego lub czy istnieje jeden dla kolekcji? To, co próbowałem, to deserializator, ale wygląda na brzydki (nie jest generyczny i używa implementacji zamiast interfejsu).
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();
}
}
więc kilka pytań:
- Czy istnieje jakiś mieście Jackson, który zmienia wartość null do pustej kolekcji podczas deserializacji?
- Jeśli nie dla pierwszego punktu - czy muszę w tym celu napisać deserializer? Jeśli tak, czy mogę napisać rodzajowy?