[Java] Come dire a Jackson di ignorare un campo durante la serializzazione se il suo valore è nullo?


Answers

Con Jackson> 1.9.11 e <2.x usa @JsonSerialize annotazione @JsonSerialize per farlo:

@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)

Question

Come può essere configurato Jackson per ignorare un valore di campo durante la serializzazione se il valore di quel campo è nullo.

Per esempio:

public class SomeClass {
   // what jackson annotation causes jackson to skip over this value if it is null but will 
   // serialize it otherwise 
   private String someValue; 
}






Questo mi ha turbato per un po 'di tempo e alla fine ho trovato il problema. Il problema era dovuto a un'importazione errata. Prima stavo usando

com.fasterxml.jackson.databind.annotation.JsonSerialize

Che era stato deprecato. Basta sostituire l'importazione con

import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;

e usarlo come

@JsonSerialize(include=Inclusion.NON_NULL)



nel mio caso

@JsonInclude(Include.NON_EMPTY)

ha funzionato




Se si desidera aggiungere questa regola a tutti i modelli in uso con Jackson 2.6+:

mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);



In Jackson 2.x, utilizzare:

@JsonInclude(JsonInclude.Include.NON_NULL)



Jackson 2.x + usa

mapper.getSerializationConfig().withSerializationInclusion(JsonInclude.Include.NON_NULL);