首页 JSON 转 YAML

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 等价形式写入(42truefalsenull)。
  • 空对象和数组分别写为 {}[]

输出是有效的 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 永远不会离开您的设备。