Я бы посоветовал отказаться от Lombok для ваших классов данных, чтобы прояснить ситуацию, когда что-то работает не так, как ожидалось. В этом случае вы можете написать более лаконичный код без ломбока, используя стратегию видимости по умолчанию JSON -B, что означает, что поля publi c автоматически [де] удаляются и не нуждаются в геттерах / сеттерах.
Итак, ваши классы данных могут быть:
public class Attributes {
public AttributesA a;
public AttributesB b;
}
public class AttributesA {
public String field1;
}
public class AttributesB {
public String field2;
public String field3;
}
Есть ли способ настроить остальной клиент, чтобы избежать сериализации нулевых полей?
По умолчанию JSON -B не сериализует нулевые значения. Итак, если бы мы сделали:
Attributes empty = new Attributes();
String json = jsonb.toJson(empty);
System.out.println(json); // "{}"
, мы бы просто получили пустой JSON объект {}
. Аннотация @JsonbNillable
полезна, если вы do хотите сериализовать нулевые значения как null
.