Просто чтобы расширить другие ответы - если вам нужно контролировать пропуск пустых значений для каждого поля, аннотируйте соответствующее поле (или альтернативно аннотируйте «получатель» поля).
пример - здесь только fieldOne
из json будет опущено, если оно пустое. fieldTwo
всегда будет включен независимо от того, является ли он нулевым.
public class Foo {
@JsonInclude(JsonInclude.Include.NON_NULL)
private String fieldOne;
private String fieldTwo;
}
Чтобы опустить все нулевые значения в классе по умолчанию, аннотируйте класс. Аннотации для каждого поля / получателя все еще можно использовать для переопределения этого значения по умолчанию, если это необходимо.
пример - здесь fieldOne
и fieldTwo
будет опущен из json, если они равны нулю, соответственно, потому что это значение по умолчанию установлено аннотацией класса. fieldThree
однако переопределит значение по умолчанию и будет всегда включено из-за аннотации на поле.
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Foo {
private String fieldOne;
private String fieldTwo;
@JsonInclude(JsonInclude.Include.ALWAYS)
private String fieldThree;
}
ОБНОВИТЬ
Выше для Джексона 2 . Для более ранних версий Джексона вам необходимо использовать:
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
вместо
@JsonInclude(JsonInclude.Include.NON_NULL)
Если это обновление полезно, пожалуйста, подтвердите ответ ZiglioUK ниже, он указал на более новую аннотацию Jackson 2 задолго до того, как я обновил свой ответ, чтобы использовать его!
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
:; почему-то ваша аннотация была недоступна.