Как проверить значения в файле конфигурации YAML при его загрузке?

Есть ли способ проверить значения в файле YAML при его загрузке в код. Требование состоит в том, что у меня есть некоторые элементы в файле YAML, которые должны иметь значения. Если проверка не удалась, то YAML не должен загружаться.

Я использую библиотеку snakeyaml и слышал, что есть способ сделать это через репрезентатор.

Код, который я сейчас использую для загрузки YAML,

Reader in = new InputStreamReader(Files.newInputStream(file), StandardCharsets.UTF_8);
Yaml yaml = new Yaml();
yaml.setBeanAccess(BeanAccess.FIELD);
return yaml.loadAs(in, School.class);

person Thanuja    schedule 01.12.2016    source источник


Ответы (1)


Поскольку вы можете иметь любое значение в файле YAML, вы должны загрузить файл в функцию, проверить значения и вызвать ошибку, если значения не те, которые вы хотите. Верните загруженные данные, если они есть.

Это может иметь побочные эффекты, если в вашем YAML есть теги, которые создают произвольные объекты, но проверка во время загрузки не предотвратит этого, поскольку такой объект мог быть создан до того, как вы дойдете до значения, которое хотите проверить.

Если у вас есть теги в вашем YAML, и это реальная проблема, вам нужно будет создать safe_load-er для файла YAML, который может обрабатывать теги (путем создания обычных объектов сопоставления), затем проверить значения и перезагрузить с полным поддержка тегов.

person Anthon    schedule 01.12.2016