Solo para ampliar las otras respuestas: si necesita controlar la omisión de valores nulos por campo, anote el campo en cuestión (o, alternativamente, anote el 'captador' del campo).
ejemplo: aquí solo fieldOne
se omitirá de json si es nulo. fieldTwo
siempre se incluirá independientemente de si es nulo.
public class Foo {
@JsonInclude(JsonInclude.Include.NON_NULL)
private String fieldOne;
private String fieldTwo;
}
Para omitir todos los valores nulos en la clase por defecto, anote la clase. Las anotaciones por campo / captador todavía se pueden usar para anular este valor predeterminado si es necesario.
ejemplo: aquí fieldOne
y fieldTwo
se omitirá de json si son nulos, respectivamente, porque este es el valor predeterminado establecido por la anotación de clase. fieldThree
sin embargo, anulará el valor predeterminado y siempre se incluirá, debido a la anotación en el campo.
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Foo {
private String fieldOne;
private String fieldTwo;
@JsonInclude(JsonInclude.Include.ALWAYS)
private String fieldThree;
}
ACTUALIZAR
Lo anterior es para Jackson 2 . Para versiones anteriores de Jackson necesitas usar:
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
en vez de
@JsonInclude(JsonInclude.Include.NON_NULL)
Si esta actualización es útil, vota la respuesta de ZiglioUK a continuación, ¡señaló la nueva anotación Jackson 2 mucho antes de que actualizara mi respuesta para usarla!
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
; de alguna manera tu anotación no estaba disponible.