Ho un'entità che contiene la raccolta come attributo:Jackson deserializzatore - cambiare raccolta nulla per svuotare una
public class Entity {
@JsonProperty(value="homes")
@JsonDeserialize(as=HashSet.class, contentAs=HomeImpl.class)
private Collection<Home> homes = new ArrayList<Home>();
}
Se la richiesta contiene nulla come richiesta di proprietà:
{
"homes": null
}
poi case è impostato su NULL . Quello che voglio fare è impostare le case sulla lista vuota. Devo scrivere un deserializzatore speciale per questo o ce n'è uno per le raccolte? Quello che ho provato è questo deserializzatore ma sembra brutto (non è generico e utilizza l'implementazione anziché l'interfaccia).
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();
}
}
Così alcune domande:
- c'è qualche proprietà Jackson che cambia nulla alla raccolta vuota durante la deserializzazione?
- Se no per il primo punto, è necessario scrivere deserializzatore per questo? Se sì, posso scriverne uno generico?