Просто для розширення інших відповідей - якщо вам потрібно контролювати опущення нульових значень на основі кожного поля, анотуйте поле, про яке йдеться (або альтернативно анотуйте «гетьтер» поля).
приклад - тут 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 . Для більш ранніх версій Jackson вам потрібно використовувати:
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
замість
@JsonInclude(JsonInclude.Include.NON_NULL)
Якщо це оновлення корисне, будь ласка, підкажіть відповідь ZiglioUK нижче, воно вказувало на новіші анотації Jackson 2 задовго до того, як я оновив свою відповідь, щоб використовувати її!
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
:; чомусь ваша примітка не була доступною.