⌘K 切换工具
VALIDATE & INSPECT

YAML验证器

验证YAML语法并查看解析结果。

local
yaml-validator
§01 关于此工具

概述

YAML 校验器随着你的输入实时检查 YAML 语法,文档合法时以格式化的 JSON 显示解析后的结构。 它使用 js-yaml——无数 Node.js 工具链里的同一个解析器,因此报错和类型推断 与你的构建流水线的行为一致。在提交之前调试 CI 配置(GitHub Actions、GitLab CI)、 Kubernetes 清单和 Docker Compose 文件时很有用。

使用方法

  1. 把文档粘贴或输入到 YAML 输入框。
  2. 看它下方的状态行:成功时显示 Valid YAML,失败时显示解析器的错误信息,其中包含出问题的行号和列号。
  3. 合法时,查看 Parsed (as JSON) 面板,确认结构和推断出来的类型。

示例

输入:

server:
  host: localhost
  port: 8080

Parsed (as JSON) 面板给出 { "server": { "host": "localhost", "port": 8080 } }—— 注意 port 是数字,不是字符串。

用制表符做缩进会产生一个指出问题所在行的错误,因为 YAML 禁止用制表符缩进。

说明

校验器只解析单个文档;用 --- 分隔的多文档流不会被完整报告。校验只覆盖语法—— 它无法知道这些键对于消费这个文件的工具来说是否正确(那需要一个针对特定格式、 了解 schema 的 linter)。

报错里的行号和列号指向的是解析器放弃的位置,而真正的毛病常常在它前面一两行—— 缩进写错就是最典型的例子。

anchor 和 alias 相互引用、展开量成倍放大的文档会在解析之前就被拒绝。嵌套的 alias 只用几百字节就能展开成几百 MB——253 字节膨胀到 22.8 MB 很容易构造出来——那会把标签页 卡死。日常的 anchor 用法不受影响,包括 Docker Compose 和 CI 配置里到处都在用的 <<: 合并键。超过 2 MB 的输入同样会被拒绝。

FAQ
我的 YAML 会被发送到服务器吗?
不会。解析在浏览器内使用 js-yaml 库完成,配置文件、密钥和 CI 定义都不会离开这个页面。
为什么解析结果以 JSON 显示?
JSON 让解析出来的结构没有歧义。同一份数据在 YAML 里有很多种写法,把结果的对象、数组、字符串和数字以 JSON 呈现,可以确切地确认消费方会怎么理解你的文档。
我的 YAML 是合法的,但某个值的解析结果和预期不同,为什么?
YAML 的类型推断很激进:不加引号的 no 在某些 schema 下会变成 false,08 可能因为被当作八进制而失败,1.0 会变成数字。希望被当作字符串的值请加引号,并用 JSON 预览确认推断出来的类型。