2015-02-02 4 views
0

Я использую SnakeYAML для сохранения данных в файл YAML.Как исключить класс из файла YAML?

DumperOptions options = new DumperOptions(); 
options.setPrettyFlow(true); 
options.setAllowReadOnlyProperties(true); 
Yaml yml = new Yaml(options); 

FileWriter writer = new FileWriter(path); 
yml.dump(object, writer); 
writer.flush(); 
writer.close(); 

При попытке сохранить результат, я получаю такое содержание

!!com.test.yml.User 
users: 
- { 
    name: Bob, 
    age: 14 
} 
- { 
    name: John, 
    age: 15 
} 

Как я могу избежать класс !!com.test.yml.User из файла?

Также я не хочу сохранять нулевые объекты. Например

- { 
    name: null, 
    age: 14 
    } 

должен быть

- { 
    age: 14 
    } 

ответ

0
Representer representer = new Representer(); 
representer.addClassTag(com.test.yml.User.class, Tag.MAP); 
Yaml yaml = new Yaml(representer); 

Этот код говорит - пожалуйста, используйте Tag.MAP для пользовательского класса User. Поскольку тег MAP неявный, тег исчезнет вместе. Но, чтобы проанализировать это, вы должны дать SnakeYAML указание проанализировать данные в экземпляре пользователя.

+0

Примеры кода часто более полезны, когда они сопровождаются небольшим количеством объяснений. – Trilarion

+0

В коде говорится: используйте Tag.MAP для пользовательского класса User. Поскольку тег MAP неявный, тег исчезнет вместе. Но, чтобы проанализировать это, вы должны дать SnakeYAML указание проанализировать данные в экземпляре пользователя. – Andrey

Смежные вопросы