Я использую Джексона, и у меня есть несколько объектов схемы JSON, настроенных примерно так:
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class Person {
String name;
Child child = new Child();
Sibling sibling = new Sibling();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Child getChild() {
return child;
}
public void setChild(Child child) {
this.child = child;
}
public Sibling getSibling() {
return sibling;
}
public void setSibling(Sibling sibling) {
this.sibling = sibling;
}
}
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class Child {
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class Sibling {
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Я пытаюсь игнорировать все поля, которые являются пустыми или пустыми, что прекрасно работает.Но я также хочу игнорировать объекты с полями, которые являются нулевыми или пустыми.Например:
Person person = new Person();
person.setName("John Doe");
ObjectMapper mapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(person);
Результирующая строка JSON равна {"name":"John Doe","child":{},"sibling":{}}
, но я хочу, чтобы она была {"name":"John Doe"}
.Child
и Sibling
необходимо инициализировать при создании Person
, поэтому я не хочу это менять.Есть ли способ заставить Джексона обрабатывать объекты с пустыми полями как нулевые с помощью специального сериализатора?Я видел примеры использования пользовательских сериализаторов для определенных типов объектов, но мне нужен такой, который бы работал для любого объекта.