[java] Comment dire à Jackson d'ignorer un champ pendant la sérialisation si sa valeur est nulle?


Answers

Avec Jackson> 1.9.11 et <2.x, utilisez l'annotation @JsonSerialize pour cela:

@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)

Question

Comment Jackson peut-il être configuré pour ignorer une valeur de champ pendant la sérialisation si la valeur de ce champ est null.

Par exemple:

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; 
}



Dans Jackson 2.x, utilisez:

@JsonInclude(JsonInclude.Include.NON_NULL)



dans mon cas

@JsonInclude(Include.NON_EMPTY)

fait marcher ça.




Jackson 2.x + utilisation

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






Cela m'a troublé pendant un certain temps et j'ai finalement trouvé le problème. Le problème était dû à une mauvaise importation. Plus tôt j'avais utilisé

com.fasterxml.jackson.databind.annotation.JsonSerialize

Ce qui avait été déprécié. Il suffit de remplacer l'importation par

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

et l'utiliser comme

@JsonSerialize(include=Inclusion.NON_NULL)



Si vous voulez ajouter cette règle à tous les modèles de Jackson 2.6+, utilisez:

mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);





Related



Tags

java java   jackson