JSON 转 YAML 转换器
粘贴 JSON,立即获得整洁、带缩进的 YAML——严格验证、复制和下载,100% 在浏览器中运行。
输入 JSON
YAML 输出
什么是 YAML?
YAML("YAML Ain't Markup Language")是一种对人类友好的数据序列化格式,专为便于手工读写而设计。它使用缩进表示嵌套,使用连字符表示列表项,使用 key: value 表示映射,无需 JSON 所需的引号、大括号和逗号。YAML 是 JSON 的超集——每个有效的 JSON 文档也是有效的 YAML 文档——它广泛用于配置文件、CI 流水线和结构化文档。
由于 YAML 偏好可读性而非紧凑性,它往往是人类直接编辑文件的首选格式:Kubernetes 清单、Docker Compose 文件、GitHub Actions 工作流、Ansible 剧本和应用程序配置都常用 YAML。
为什么要将 JSON 转换为 YAML?
JSON 和 YAML 表示相同的数据结构——对象、数组、字符串、数字、布尔值和 null——因此它们之间的转换是无损的。您可能希望将 JSON 转换为 YAML 的原因有:
- 手工编辑。YAML 基于缩进的语法比 JSON 的大括号和引号更易阅读和修改。
- 配置。许多工具接受 YAML 配置,但导出或公开的是 JSON——转换让您在两者之间切换。
- 文档。YAML 整洁的外观更适合在 README 文件、教程和内联文档中嵌入数据。
- 便于差异审查。在审查更改时,基于缩进的差异通常比基于大括号的差异更清晰。
反之,如果您需要通过网络发送数据、以编程方式解析或将其嵌入 JavaScript,JSON 通常是更好的选择。两种格式互补——转换让您在各自擅长的场景中使用。
转换的工作原理
本工具使用浏览器原生的 JSON.parse 解析您的 JSON 输入,然后遍历生成的对象树,按以下规则输出 YAML 文本:
- 对象变为映射:每个
"key": value对在各自的行上变为key: value,缩进以显示嵌套。 - 数组变为序列:每个项在各自的行上以前缀
-写入。 - 字符串在简单且无歧义时无需引号写入;否则用双引号包裹并正确转义。
- 数字、布尔值和 null以其裸 YAML 等价形式写入(
42、true、false、null)。 - 空对象和数组分别写为
{}和[]。
输出是有效的 YAML 1.2,可被大多数 YAML 解析器干净地往返处理。缩进每级使用两个空格,这是最常见的约定。
何时使用 JSON 与 YAML
两种格式各有优势。请根据数据的使用方式选择:
- 使用 JSON用于 API 负载、NoSQL 文档存储、服务间通信、JavaScript 中的嵌入数据,以及任何机器解析和小体积最重要的场景。
- 使用 YAML用于配置文件、CI/CD 流水线、基础设施即代码清单、文档片段,以及任何人类需要手工读写文件的场景。
一个实用的工作流是将机器生成的数据存储为 JSON,仅在人类需要读写时才转换为 YAML。这保持机器路径简单快速,同时仍为人类提供愉悦的编辑体验。
需要注意的限制
本转换器完全处理 JSON 数据模型,但 YAML 具有 JSON 没有的功能。需要注意以下几点:
- 多行字符串。JSON 将换行转义为
\n。转换器将它们保留为引号 YAML 字符串中的转义序列;不会输出高级 YAML 块标量(|和>)。 - 锚点和别名。JSON 没有引用的概念,因此输出永不包含 YAML 锚点或别名。重复的结构以内联方式输出。
- 标签和自定义类型。YAML 的类型系统比 JSON 丰富;输出仅限于核心 JSON 类型。
- 注释。JSON 没有注释,因此 YAML 输出也没有。转换后如需要,请手工添加。
对于大多数用例——配置文件、数据检查、文档——转换后的 YAML 可直接使用。
这个 JSON 转 YAML 转换器免费吗?
是的,完全免费,无需注册、除设备内存外没有任何限制,无需上传——一切在本地运行。
无效的 JSON 会被转换吗?
不会。本工具先验证 JSON,如果无效则显示解析错误。修复 JSON 后再次转换。
YAML 输出使用制表符还是空格?
空格——每级缩进两个空格,这是最常见的 YAML 约定。YAML 不允许使用制表符进行缩进。
可以将 YAML 转回 JSON 吗?
可以。请使用本站配套的"YAML to JSON"工具进行反向转换。
我的数据会被上传吗?
不会。所有解析和转换都在浏览器中进行,JSON 永远不会离开您的设备。