YAML 转 JSON 转换器
粘贴 YAML,立即获得整洁、带缩进的 JSON——严格验证、复制和下载,100% 在浏览器中运行。
输入 YAML
JSON 输出
什么是 JSON?
JSON(JavaScript Object Notation,JavaScript 对象表示法)是一种轻量级的、基于文本的数据交换格式,源自 JavaScript 的对象字面量。它将数据表示为对象({ })、数组([ ])、字符串(双引号)、数字、布尔值(true/false)和 null。JSON 是 REST API、NoSQL 文档存储(MongoDB、CouchDB)、配置文件和嵌入数据的事实标准,因为几乎所有编程语言都内置了快速的 JSON 解析器。
与 YAML 不同,JSON 严格要求双引号字符串、元素之间用逗号分隔,并用大括号界定结构。这使它更冗长,但也更确定、更易解析——这正是它在机器间通信领域占据主导的原因。
为什么要将 YAML 转换为 JSON?
YAML 和 JSON 描述相同的数据结构——对象、数组、字符串、数字、布尔值和 null——因此对于 JSON 数据模型而言,它们之间的转换是无损的。您可能希望将 YAML 转换为 JSON 的原因有:
- API 消费。大多数 API 使用 JSON。将 YAML 配置转换为 JSON 后,可直接提供给期望 JSON 的客户端或服务。
- 工具链。许多库、linter 和 CI 工具只接受 JSON。转换让您能在仅支持 JSON 的流水线中复用 YAML 编写的数据。
- 程序化解析。每种语言都自带原生 JSON 解析器,而 YAML 解析器远没有那么普遍。JSON 解析更快、更安全。
- 嵌入 JavaScript。JSON 是合法的 JavaScript,因此转换后的输出可直接粘贴到源代码中。
反之,如果需要人类阅读或手工编辑数据,YAML 通常是更好的选择。两种格式互补——转换让您在各自擅长的场景中使用。
转换的工作原理
本工具运行内置的 YAML 解析器(不依赖任何外部库),遍历基于缩进的结构并输出等价的 JSON。解析器理解最常见的 YAML 构造:
- 映射(
key: value)变为 JSON 对象。每个键被解码为字符串;值可以是标量、嵌套映射或序列。 - 序列(以
-开头的行)变为 JSON 数组。项可以是标量、嵌套映射或更深层的序列。 - 标量会自动判断类型:
true/false/yes/no变为布尔值,null/~变为 null,整数和浮点数变为数字,其余皆为字符串。 - 引号字符串。双引号(
"...")和单引号('...')字符串始终被视为字符串,并解码其中的转义序列。 - 流式风格。支持内联数组
[a, b, c]和内联对象{a: 1, b: 2}。 - 注释。以
#开头的行和行尾# ...注释会被忽略。
缩进必须使用空格(绝不能用制表符,YAML 明令禁止)。输出以两空格缩进进行美化,是有效的 JSON,可被任何 JSON 解析器干净地往返处理。
何时使用 YAML 与 JSON
两种格式各有优势。请根据数据的使用方式选择:
- 使用 YAML用于配置文件、CI/CD 流水线、基础设施即代码清单、文档片段,以及任何人类需要手工读写的场景。
- 使用 JSON用于 API 负载、NoSQL 文档存储、服务间通信、JavaScript 中的嵌入数据,以及任何机器解析和小体积最重要的场景。
一个实用的工作流是:人类手工用 YAML 编写数据,再在机器需要消费时转换为 JSON。这保持了愉悦的人类编辑体验,同时仍为机器提供快速、严格的解析格式。
需要注意的限制
本转换器覆盖了绝大多数配置文件使用的常见 YAML 子集,但 YAML 有些 JSON 无法表达的功能。需要注意以下几点:
- 多行字符串。块标量(
|字面式和>折叠式)会按其原始内容解析;生成的 JSON 字符串将以\n转义的真实换行呈现。 - 锚点和别名。不支持 YAML 引用(
&anchor/*alias)——请改为内联重复结构。 - 标签和自定义类型。YAML 丰富的类型系统(集合、有序映射、日期、自定义标签)会被缩减为核心 JSON 类型。
- 注释。JSON 没有注释,因此 YAML 中的注释会从输出中丢弃。
- 多文档。以
---分隔的 YAML 流会被当作单个文档解析;仅使用第一个文档。
对于大多数用例——Kubernetes 清单、Docker Compose 文件、GitHub Actions 工作流、应用配置——转换后的 JSON 可直接使用。
这个 YAML 转 JSON 转换器免费吗?
是的,完全免费,无需注册、除设备内存外没有任何限制,无需上传——一切在本地运行。
无效的 YAML 会被转换吗?
不会。本工具先验证 YAML,如果无效则显示解析错误。修复 YAML 后再次转换。
解析器支持用制表符缩进吗?
不支持。YAML 禁止用制表符缩进——只能使用空格。遇到制表符时解析器会报错。
可以将 JSON 转回 YAML 吗?
可以。请使用本站配套的"JSON to YAML"工具进行反向转换。
我的数据会被上传吗?
不会。所有解析和转换都在浏览器中进行,YAML 永远不会离开您的设备。