YAML Formatter:验证和格式化YAML
YAML formatter在浏览器中格式化、验证和转换YAML为JSON。可配置缩进,支持文件下载。
什么是YAML Formatter?
YAML Formatter是一款基于浏览器的工具,可对YAML文本进行解析、验证,并以一致的可配置缩进重新序列化。YAML的缩进敏感语法意味着一个错误对齐的块可能改变整个文档的含义,或产生难以目视定位的错误。此工具可立即检测这些问题,并生成符合您偏好风格的整洁输出。
除基本格式化外,该工具还可将YAML直接转换为JSON,在API或工具需要JSON但源配置为YAML时非常有用,也可用于验证YAML能否解析为预期的数据结构。两种操作均使用js-yaml库在浏览器中完全本地执行。数据不会离开您的设备,无需账户,完全免费。
主要功能
- 以正确缩进格式化YAML — 使用
js-yaml解析输入,并以所选缩进大小重新序列化。lineWidth: -1选项防止格式化器在长字符串中插入换行符,noRefs: true将锚点和别名展开为完整值。 - 带错误消息的YAML语法验证 — 若
js-yaml抛出解析错误,精确的错误消息(含行号)将显示在输出面板下方。错误使用无障碍属性role="alert"。 - 将YAML转换为JSON — 解析YAML并使用
JSON.stringify以所选缩进将结果序列化为JSON格式。下载逻辑检测输出是否以{或[开头,并自动以.json扩展名保存文件。 - 将格式化输出复制到剪贴板 — 使用Clipboard API,附带textarea回退方案。
- 下载为.yaml或.json文件 — 当输出为JSON(来自转换操作)时,文件保存为
formatted.json;当输出为YAML(来自格式化操作)时,保存为formatted.yaml。 - 键盘快捷键 — Ctrl+Enter(Cmd+Enter)格式化;Ctrl+Shift+J(Cmd+Shift+J)转换为JSON。
如何使用YAML Formatter
第1步:粘贴YAML
进入/developer/code/yaml-formatter工具页面。将您的YAML粘贴到左侧输入面板。文本区域为等宽字体,可调整大小。浏览器内存能容纳的任意大小YAML文档均可接受,工具不设大小限制。
第2步:选择缩进
打开面板下方操作栏中的缩进下拉菜单。选择2个空格或4个空格。该选择同时影响Format输出和JSON转换输出。两个空格缩进是YAML社区默认标准,Kubernetes清单、Ansible剧本和大多数CI/CD管道文件均采用此标准。四个空格缩进符合部分Python和Java项目规范。
第3步:格式化或转换
点击Format(或按Ctrl+Enter / Cmd+Enter)在右侧面板生成规范化的YAML输出。点击To JSON(或按Ctrl+Shift+J / Cmd+Shift+J)生成等效的JSON文档。
输入示例:缩进不一致的Kubernetes Deployment清单:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-frontend
labels:
app: web
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
以2空格缩进格式化后的输出:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-frontend
labels:
app: web
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
第4步:转换为JSON(可选)
在输入中保留相同YAML,点击To JSON。输出面板显示等效的JSON文档:
{
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"name": "web-frontend",
"labels": {
"app": "web"
}
}
}
(为简洁起见已截断,完整文档将包含spec)
第5步:复制或下载
点击Copy将输出复制到剪贴板。点击Download保存文件。工具会根据输出内容是否像JSON(以{或[开头)自动选择.yaml或.json作为文件扩展名。
实用示例
规范化CI/CD管道文件
一个GitHub Actions工作流文件经多位贡献者编辑后缩进混乱。将其粘贴到格式化器,以2空格缩进点击Format,输出即呈现全文一致的缩进。提交更改前,对比输入和输出以确认无语义差异——由于YAML对缩进敏感,重新格式化可能会暴露原文件中隐藏的对齐错误。
验证配置结构
您维护一个Node.js应用的配置文件,以YAML部署,但运行时将其作为已解析的JavaScript对象读取。粘贴配置并点击To JSON,JSON输出将精确展示解析后对象的样貌,包括类型转换(裸true/false → 布尔值,无引号数字 → 数字)。这可确认port: 8080之类的值是数字而非字符串"8080"。
输入:
server:
host: 0.0.0.0
port: 8080
debug: false
database:
url: postgres://localhost:5432/myapp
pool: 10
JSON输出:
{
"server": {
"host": "0.0.0.0",
"port": 8080,
"debug": false
},
"database": {
"url": "postgres://localhost:5432/myapp",
"pool": 10
}
}
展开YAML锚点
YAML支持锚点(&)和别名(*)以复用值。格式化器使用noRefs: true,所有别名在输出中均被展开为完整值。这使格式化后的文档自包含,在不支持锚点的工具中也更易阅读。
技巧与最佳实践
格式化器保留键顺序。 js-yaml的转储选项包含sortKeys: false,因此键的排列顺序在格式化输出中保持原样。这对Kubernetes和Ansible文档尤为重要,即使技术上不强制要求,字段顺序也具有约定意义。
长字符串不会换行。 lineWidth: -1设置禁用自动换行。多行字符串和长值将保持在单行,而非在任意列处换行。如需换行输出,可复制结果后在编辑器中手动应用换行。
在版本控制提交前验证。 YAML缩进错误是CI失败的常见原因。推送前先用此格式化器处理管道文件,无错误消息的干净格式化结果即确认YAML语法有效。
下载时检查文件扩展名。 下载逻辑检查输出内容而非您执行的操作。若格式化了YAML且该YAML恰好以{开头(部分YAML文件使用JSON兼容语法),文件将保存为.json,必要时请重命名。
YAML布尔值规则严格。 YAML规范在YAML 1.1中将true、false、yes、no、on和off识别为布尔值。js-yaml库默认遵循YAML 1.2,其中只有true和false是布尔值。若您的YAML使用yes/no,格式化器将把它们视为普通字符串。
常见问题与故障排除
带行列号的错误消息 — js-yaml解析错误包含问题的精确位置。查看输入中指示的行。常见原因:使用制表符而非空格缩进(YAML不允许制表符)、未加引号字符串中的冒号(如url: http://example.com必须写成url: "http://example.com"或使用块标量)、或错误的嵌套层级。
输出中缺少输入中的值 — 若YAML使用js-yaml不识别的!!类型标签(如!!binary、!!timestamp),这些值可能被丢弃或转换。检查具体值以确定类型标签,必要时将值加引号。
"Please enter YAML to format"错误 — 点击Format或转换时,输入框为空或仅含空白字符。请先将YAML粘贴到输入面板。
转换后的JSON中出现意外null值 — YAML值~或空值(冒号后无值的键)在JSON中变为null,这是符合YAML规范的正确行为。若您希望得到字符串"~"或空字符串"",请将值加引号。
下载保存为.json而非.yaml — 下载处理器检查输出是否以{或[开头。部分YAML文档使用JSON兼容的YAML语法,以花括号开头。遇此情况,保存后请将下载的文件重命名为.yaml。
隐私与安全
YAML Formatter使用js-yaml库在浏览器中本地处理所有输入。您粘贴的任何文本——包括数据库连接字符串、API令牌、私钥或个人配置数据——均不会发送到任何服务器。页面加载后,工具无需网络连接即可运行。格式化操作不进行会话跟踪。
常见问题解答
YAML Formatter是免费的吗? 是的,完全免费,无使用限制。所有格式化、验证和转换操作均可免费使用。Glyph Widgets的支持者功能(已保存预设、会话历史、工具备注)可供Ko-fi支持者使用,但核心YAML功能无需任何条件。
支持离线使用吗? 支持。所有处理均在您的浏览器中运行。页面加载后,可断开网络连接,格式化器和转换器仍可正常使用。
我的数据安全吗? 安全。您的YAML输入不会传输到服务器,仅存在于浏览器内存中,点击清除或关闭标签页时即被清除。
格式化器支持YAML多文档文件(多个---分节)吗? js-yaml的load函数解析流中的第一个文档。多文档YAML文件(以---分隔)仅对第一个文档进行格式化。多文档文件请使用yaml.loadAll行为,但本工具目前仅处理第一个文档。
Format和To JSON有什么区别? Format将解析后的YAML以一致缩进重新序列化为YAML格式;To JSON将相同的解析数据序列化为JSON文档。两种操作使用相同的解析步骤,因此都会验证YAML,并在输入无效时以相同方式失败。
格式化器会保留注释吗? 不会。js-yaml解析器在解析时丢弃注释。格式化后,原始输入中的注释不会出现在输出中。如需保留注释,请在源文件中手动编辑缩进。
可以将JSON转换为YAML吗? 本工具将YAML转换为JSON。如需反向转换,请使用即将推出: JSON Converter工具,该工具支持JSON到YAML的转换。
该工具支持哪个YAML版本? js-yaml库实现YAML 1.2,与YAML 1.1相比,在布尔值和其他一些边缘情况上更为严格。大多数现代YAML文件(Kubernetes、Docker Compose、GitHub Actions等)均为YAML 1.2兼容格式。
转换为JSON的键盘快捷键是什么? 在Windows/Linux上按Ctrl+Shift+J,在macOS上按Cmd+Shift+J触发转换为JSON操作。格式化请按Ctrl+Enter或Cmd+Enter。
下载时的文件扩展名能反映我执行的操作吗? 不能直接反映。下载处理器通过检查输出文本是否以{或[开头来决定使用.json还是.yaml。以映射开头的格式化YAML输出将保存为.yaml,JSON转换输出(始终以{或[开头)将保存为.json。
相关工具
JSON Formatter — 支持模式验证、模式生成和交互式树形查看器的JSON格式化、验证和压缩工具。
XML Formatter — 具有相同缩进控制和压缩支持的XML文档格式化和验证工具。
即将推出: TOML Formatter — TOML配置文件格式化和验证工具。
立即试用YAML Formatter:YAML Formatter