YAML 架构验证?

发布于 2024-10-18 10:38:05 字数 86 浏览 2 评论 0 原文

YAML 是否有模式验证语言?我用谷歌搜索但找不到任何有用的东西。

像 XSD 格式这样的东西,使用语言本身来描述模式,对我来说是最好的选择。

Is there a schema validation language for YAML? I've googled but couldn't find anything useful.

Something like XSD format, using the language itself to describe the schema, would be the best choice in my case.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

梦里泪两行 2024-10-25 10:38:05

JSON Schema 可与大多数 YAML 文档一起使用,从而产生比 Rx夸化。 JSON Schema 是我能够找到的三个中唯一的编辑器支持< /a>.

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


全面披露:我创建了上面链接的网站,试图使 JSON 模式在 YAML 中的应用更容易被发现。我还为 VS Code 编写了一个编辑器扩展,该扩展已被上面链接的 RedHat 扩展所取代。

JSON Schema can be used with most YAML documents resulting in a more portable and better documented solution than Rx or Kwalify. JSON Schema is the only of the three for which I have been able to find editor support.

More information on using YAML and JSON Schema including tools and editor support is tracked on this page. At the time of writing, there is editor support in Visual Studio Code and a command-line based validation tool available via npm.


Full Disclosure: I authored the web site linked above to try to make the application of JSON Schema to YAML more discoverable. I also wrote an editor extension for VS Code that has since been superseded by the RedHat extension linked above.

孤星 2024-10-25 10:38:05

尝试 Kwalify(仅限 Ruby 和 Java),或 Rx(多种语言)

Try Kwalify (Ruby and Java only), or Rx (many languages)

不回头走下去 2024-10-25 10:38:05

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

I wonder if it would make sense to reuse JSON schema for this. YAML can be easily converted to JSON without loosing any information (?), so in theory YAML could be validated by the same tool chain, allowing open source community to concentrate on one good schema tool chain. The schema itself could also be written in YAML and converted to JSON.

霞映澄塘 2024-10-25 10:38:05

好主意。谷歌搜索这个,因为我正在寻找相同的东西。

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

根据您的平台,有用于该转换的工具或片段: JavaScript ( NPM)RubyJava (Jackson), Java (TestNG) (您需要查看其所需参数的源代码)。

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

Good idea. Googled this up because I was looking for the same.

It's possible to convert YAML to XML in a defined manner (similarly to JSON <-> XML) and validate with a standard XML validator.

Depending on your platform, there are tools or snippets for that conversion: JavaScript (NPM), Ruby, Java (Jackson), Java (TestNG) (you'll need to see the source for what parameters it wants).

If done using an API, the error positions can even be mapped back to the original YAML file.

影子的影子 2024-10-25 10:38:05

您可以使用此 python ysd 项目来验证您的 yaml 文件。 https://github.com/yonahd/ysd
使用超级简单

python yaml-validator/main.py -v yamls/example-values.yaml -r yamls/example-rules.yaml 

规则文件示例:

required: // field must exist and type must match
  env: str
  enabled: bool
  replicas: int
optional: // if field exists type must match
  disk: str

yaml 文件示例(helm 值文件):

network:
  service:
    port: 8060
enabled: true
image:
  app: my-app:build
replicas: 1
env: dev
disk: local

You can use this python ysd project to validate your yaml files. https://github.com/yonahd/ysd
Super simple to use

python yaml-validator/main.py -v yamls/example-values.yaml -r yamls/example-rules.yaml 

Example rule file:

required: // field must exist and type must match
  env: str
  enabled: bool
  replicas: int
optional: // if field exists type must match
  disk: str

Example yaml file (helm values file):

network:
  service:
    port: 8060
enabled: true
image:
  app: my-app:build
replicas: 1
env: dev
disk: local
小镇女孩 2024-10-25 10:38:05

如果您的项目是 C++ 语言,您还可以使用 yaml-schema- cpp 库。它允许使用 C++ 代码中的架构文件(扩展名为 .schema 的 YAML 文件)来验证(并完成).yaml 输入文件。

If your project is in C++, you can also use the yaml-schema-cpp library. It allows to validate (and complete) the .yaml input files using schema files (YAML files with extension .schema) from your C++ code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文