Este post ha sido evaluado por nuestros expertos para asegurar la veracidad de esta crónica.
Solución:
Tiene la anotación en el lugar equivocado: debe estar en la clase, no en el campo. es decir:
@JsonInclude(Include.NON_NULL) //or Include.NON_EMPTY, if that fits your use case
public static class Request
// ...
Como se indica en los comentarios, en las versiones anteriores a la 2.x, la sintaxis de esta anotación es:
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) // or JsonSerialize.Inclusion.NON_EMPTY
La otra opción es configurar el ObjectMapper
directamente, simplemente llamando
mapper.setSerializationInclusion(Include.NON_NULL);
(para que conste, creo que la popularidad de esta respuesta es una indicación de que esta anotación deberían ser aplicable campo por campo, @fasterxml)
También puede establecer la opción global:
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
También puedes intentar usar
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
si está tratando con jackson con una versión inferior a 2+ (1.9.5), lo probé, puede usar fácilmente esta anotación sobre la clase. No para especificado para el attributessolo para decleración de clase.