有没有办法在YAML文件中加载代码时验证它们。要求是我在YAML文件中有一些必须具有值的元素。如果验证失败,则不应加载YAML。
我使用了snakeyaml库并听说有一种方法可以通过Representer来实现。
Code I目前用于加载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);
答案 0 :(得分:1)
由于您可以在YAML文件中包含任何值,因此您应该在函数中加载文件,测试值并在值不是您想要的值时引发错误。如果是,则返回已加载的数据。
如果您的YAML具有创建任意对象的标签,则可能会产生副作用,但在加载期间进行检查不会阻止这种情况,因为在您达到要检查的值之前可能已创建此类对象。
如果你的YAML中有标签并且这是一个真正的问题,那么你必须为可以处理标签的YAML文件制作一个safe_load
- (通过创建普通的映射对象),然后检查值并使用完整标记支持重新加载。