YAML模式验证?


Answers:


41

JSON Schema可以与大多数YAML文档一起使用,从而产生比RxKwalify更可移植,文档更好的解决方案。JSON Schema是我能够为其找到编辑器支持的三个中的唯一一个。

此页面上跟踪了有关使用YAML和JSON Schema的更多信息,包括工具和编辑器支持。在撰写本文时,Visual Studio Code中提供了对编辑器的支持,可通过访问基于命令行的验证工具npm


全面披露:我创建了上面链接的网站,以尝试使JSON Schema应用于YAML的过程更容易发现。我还为VS Code编写了一个编辑器扩展,此后已被上面链接的RedHat扩展取代。


我们如何在Java中实现yaml的验证。我正在使用github.com/networknt/json-schema-validator,如果针对json文件进行验证,则可以正常工作,但是不适用于yaml文件。
Piyush Kumar

随便给读者留个便条,您可能想ajv用来验证JSON,并将js-yamlYaml转换为JSON。这些是截至2020
Steven Lu

我还是有些困惑。@cheesus只是为了澄清,当您说“像魅力一样工作”时,是说您已将YAML转换为JSON,然后使用JSON模式工具(如ajv)对其进行了验证,或者这些工具是否某种程度上可以直接用于YAML?(根据我的经验,它们也不是,我也不希望它们。只是短语“ JSON Schema可以用于大多数YAML文档”听起来像它们应该那样?!?)请有人澄清一下。谢谢。
McKrassy

@McKrassy,是的,JSON Schema确实可以用于YAML文件,而无需将其转换为JSON。考虑这一点时,您应该将JSON和YAML文件都视为树结构。JSON模式在这些树结构上放置了约束,因此它们适用于JSON和YAML文件。这是用于YAML的JSON模式的示例:marketplace.visualstudio.com/items?
itemName=redhat.vscode

18

尝试使用Kwalify(仅Ruby和Java)或Rx(许多语言)


Kwalify不允许您进行地图映射,例如:Joey:年龄:22性别:M Ann:年龄:34性别:F
Toddius Zho 2015年

8
Kwalify不幸的是,它是一个很好的选择,现在不再维护。pykwalify看起来很有希望
nowox

4
使用非标准的东西似乎不是一个好的解决方案。我宁愿使用json模式,然后使用它验证YAML,因为YAML具有与JSON的一对一映射。昂首阔步做类似的事情。
卢卡斯

2

我想知道为此重复使用JSON模式是否有意义。YAML可以轻松转换为JSON,而不会丢失任何信息(?),因此从理论上讲,YAML可以通过同一工具链进行验证,从而使开源社区可以专注于一个良好的架构工具链。模式本身也可以用YAML编写并转换为JSON。


0

好主意。用谷歌搜索,因为我一直在寻找相同的东西。

可以按定义的方式(类似于JSON <-> XML)将YAML转换为XML,并使用标准XML验证器进行验证。

根据您的平台,有一些用于该转换的工具或摘要:JavaScript(NPM)RubyJava(Jackson)Java(TestNG)(您需要查看所需参数的来源)。

如果使用API​​完成,甚至可以将错误位置映射回原始YAML文件。


您好,我想创建一个YAML验证器。我该怎么办。我的意思是最好的方法是什么?
Akash Patel

@AkashPatel,最常见的方法是拥有一个架构。然后,您需要针对该架构验证整个YAML树的工具。验证的方法本身取决于模式的效力-从简单的没有递归的严格树到复杂的XSD等。这就是为什么我在回答中建议使用该方法的原因。
OndraŽižka20年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.