ZeroTool Workbench
YAML 语法验证器
在线验证 YAML 语法,精准定位错误行号和列号,验证成功后预览解析结构。免费,纯浏览器端运行,数据不离开本地。
使用方法
- 将 YAML 内容粘贴到文本框中。
- 点击 Validate 按钮(或按 Ctrl+Enter)。
- 若 YAML 合法,显示绿色成功提示,并在下方展示解析后的 JSON 结构。
- 若 YAML 不合法,错误框中显示错误原因、行号、列号及问题代码片段。
错误输出说明
验证失败时,错误框包含以下信息:
- 原因 — 错误的通俗描述(如 缩进错误、流结束异常)。
- 行号与列号 — 错误在输入中的精确位置。
- 代码片段 — 解析器提供的上下文,通常包含指向问题字符的
^标记。
常见 YAML 语法错误
- 缩进不一致 — YAML 要求统一使用空格(禁止 Tab)缩进,同级混用 2 格和 4 格缩进会导致解析错误。
- 键后缺少冒号 —
key value是非法的,正确写法为key: value。 - 特殊字符未加引号 — 值中含有
:、#、[、]、{、}等字符时,需要用引号包裹或转义。 - Tab 字符 — YAML 禁止用 Tab 缩进,应将所有 Tab 替换为空格。
- 重复键 — 同一映射块中出现重复键在 YAML 1.2 规范中是非法的。
示例:合法 YAML
server:
host: localhost
port: 8080
tls: true
database:
driver: postgres
name: myapp
credentials:
user: admin
password: "s3cr3t"
allowed_origins:
- https://example.com
- https://api.example.com
示例:非法 YAML(缩进错误)
server:
host: localhost
port: 8080 # 错误:多余的空格导致缩进不一致
验证器会报告检测到缩进不一致的行号和列号,便于快速定位并修复问题。
语法合法不等于结构正确
验证器报告的是语法错误。能解析的 YAML 结构也可能不对,所以要看「解析结构」预览。下面的文件里,carrot 少缩进了两个空格:
fruits:
- apple
vegetables:
- carrot
- spinach
验证器判定合法,预览显示 "vegetables": ["carrot - spinach"]:下一行被并进了 carrot,成为一个字符串。
YAML 1.1 与 1.2 对值的解读不同
本工具用 js-yaml 4.1.1,遵循 YAML 1.2;Python 常用的 PyYAML 遵循 YAML 1.1。同一份文件得到的数据不同:
| YAML | 本工具(js-yaml 4.1.1) | PyYAML 6.0.3 safe_load |
|---|---|---|
debug: yes | "yes"(字符串) | True |
country: NO | "NO"(字符串) | False |
octal: 0777 | 777 | 511 |
time: 12:30 | "12:30"(字符串) | 750 |
文件会被 YAML 1.1 解析器读取时,给 "NO"、"yes"、"0777" 这类值加引号。
常见报错
| 输入 | 验证器的报错 |
|---|---|
message: Error: something went wrong | bad indentation of a mapping entry(1:15);给值加引号 |
host: 前面用了 Tab | tab characters must not be used in indentation |
同一映射里出现两次 timeout | duplicated mapping key |
server 后面漏了冒号,下一行有缩进 | end of the stream or a document separator is expected |
限制
- 多个文档逐个检查。 用
---分隔多个文档的文件(如同时包含 Deployment 和 Service 的 Kubernetes 清单)用 js-yaml 的loadAll读取。全部有效时,预览是 JSON 数组,每个文档一项;有文档出错时,逐个列出每个文档的行范围,标明有效或给出错误,出错的 Service 不会掩盖有效的 Deployment。 - 只检查语法。 不按 Kubernetes、GitHub Actions、Docker Compose 的 schema 校验,也不做风格检查。CI 里用 yamllint(
yamllint .)。 - 预览是 JSON。 锚点和
<<合并键在预览里已展开,注释不显示。
FAQ
YAML 验证器能检查哪些问题?
工具使用 js-yaml 解析器(符合 YAML 1.2 规范)检查语法错误。缩进错误、非预期字符、重复键、缺少冒号等问题均可捕获,并精确报告错误所在的行号和列号。
和 YAML 转 JSON 工具有什么区别?
转换器假定输入合法并进行格式转换;而验证器专注于判断 YAML 语法是否正确,提供详细错误信息帮助修复问题。本工具面向「检查并修复 YAML 语法错误」的使用场景,而非格式转换。
「解析结构预览」是什么?
当 YAML 语法合法时,工具会将其解析为数据对象,并以格式化 JSON 形式展示,方便直观确认数据结构是否符合预期,也可复制 JSON 结果供其他地方使用。
支持哪个 YAML 规范版本?
工具使用 js-yaml 4.x,实现 YAML 1.2 规范,支持锚点、别名、多行字符串、块/流序列及显式类型标签等常用 YAML 语法。用 --- 分隔多个文档的文件用 loadAll 读取,每个文档分别给出结果。
数据会上传到服务器吗?
不会。验证完全在浏览器中通过 JavaScript 完成,YAML 内容不会离开本地设备。