Часть моей программы превращает объекты в строку YAML. Ниже приведен минимальный пример, который дает те же результаты, что и проблема, с которой я сталкиваюсь:
Главная
ObjectMapper JSONExportMapper = new ObjectMapper(new YAMLFactory());
JSONExportMapper.setSerializationInclusion(Include.NON_NULL);
JSONExportMapper.setSerializationInclusion(Include.NON_EMPTY);
String export = JSONExportMapper.writeValueAsString(new Animals());
System.out.println(export);
Животные
class Animals {
public Dog dog;
public Animals() {
this.dog = new Dog();
}
}
Собака
class Dog {
public String sound = "";
}
Выпуск:
Как видите, Dog
имеет свойство sound
, которое является пустой строкой. В моих настройках Джексона я добавил Include.NON_EMPTY
с setSerializationInclusion
, что должно предотвратить включение этих свойств в YAML, что и происходит.
Без Include.NON_EMPTY
---
dog:
sound: ""
С Include.NON_EMPTY
---
dog: {}
Вопрос:
Даже если объект полностью пуст, он все равно включается в YAML, что для меня не имеет смысла. В моем случае Animals
и Dog
- это классы из библиотеки, в которые я не должен вносить никаких изменений.
Есть что-то, что я пропускаю? Как я могу удалить объекты, которые являются полностью пустыми из результирующей строки YAML?