如何在加载时验证 YAML 配置文件中的值?

How to validate values in a YAML configuration file while loading it?

有没有一种方法可以在代码中加载 YAML 文件时验证其中的值。要求是我在 YAML 文件中有一些元素必须有值。如果验证失败,则不应加载 YAML。

我正在使用 snakeyaml 库,听说有一种方法可以通过 Representer 执行此操作。

我目前用来加载 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);

由于您可以在 YAML 文件中包含任何值,因此您应该在函数中加载文件、测试值并在值不是您想要的值时引发错误。 Return 加载的数据(如果有)。

如果您的 YAML 具有创建任意对象的标签,这可能会产生副作用,但在加载期间进行检查不会阻止这种情况,因为此类对象可能在您到达要检查的值之前就已创建。

如果您的 YAML 中确实有标签并且这是一个真正的问题,那么您必须为可以处理标签的 YAML 文件制作一个 safe_load-er(通过创建法线映射对象) ,然后检查值并重新加载完整的标签支持。