免费在线 JSON 转 YAML 转换器
将 JSON 对象转换为易读的 YAML 语法。非常适合 DevOps 配置、Docker Compose 和 Kubernetes,无需上传到服务器。
JSON 输入
YAML 输出
如何将 JSON 转换为 YAML
选择方向。
在顶部选择 JSON → YAML 或 YAML → JSON。切换时会清空两个编辑器,所以请在选好之后再粘贴输入内容。
粘贴并转换。
粘贴到左侧编辑器,如有需要可将 YAML 缩进设为 2 或 4,然后点击“转换”。结果会显示在右侧。
复制或交换。
点击“复制”获取结果。点击“交换模式”可把输出移到输入框,并向另一个方向转换回去。
常见问题
解答 JSON 和 YAML 转换中关于引号、多行字符串、注释、日期和错误的常见问题。
如何将 JSON 转换为 YAML?
保持选中 JSON → YAML 标签,将 JSON 粘贴到左侧编辑器并点击“转换”。YAML 会显示在右侧,默认使用 2 个空格缩进。在 YAML 缩进菜单中选择 4,再次点击“转换”即可得到更宽的缩进。
如何将 YAML 转换为 JSON?
点击 YAML → JSON 标签,粘贴你的 YAML 并点击“转换”,即可得到使用 2 个空格缩进的 JSON。如果你刚把 JSON 转成了 YAML,“交换模式”会把该 YAML 移到输入框并为你转换回去。
YAML 是 JSON 的超集吗?
是的,对于 YAML 1.2 而言如此。任何有效的 JSON 同时也是有效的 YAML,所以粘贴到 YAML → JSON 标签中的 JSON 同样可以解析。YAML 增加了注释、锚点、块字符串和无引号的键,因此相同的数据在 YAML 中看起来更短。
为什么有些值被加上了引号?
有些字符串如果不加引号,类型就会改变。YAML 读取器可能把 yes、on、true、null、123 或 2024-01-01 当作布尔值、数字、null 或日期,所以转换器会给这些字符串加上单引号。你 JSON 中真正的数字和布尔值则保持不加引号。
多行字符串和长字符串是如何写出的?
含换行的字符串会变成 | 块,每行一行;|- 表示末尾没有换行。含空格且超过约 80 个字符的字符串会用 >- 折成多行。两种形式读回后得到的文本完全一致。
注释、锚点和合并键会怎么处理?
将 YAML 转换为 JSON 时,注释会被丢弃,因为 JSON 不支持注释。锚点(&)、别名(*)和 << 合并键会被展开为完整的值副本。再转换回 YAML 时,输出的是这些副本,而不是锚点。
为什么我的 YAML 日期变成了时间戳?
解析器会把未加引号的日期当作日期读取,而 JSON 会把它存为完整的时间戳,所以 d: 2024-01-01 会变成“2024-01-01T00:00:00.000Z”。给日期加上引号即可保留为文本。.inf 和 .nan 这类值会变成 null,因为 JSON 没有这样的数字。
为什么我的 YAML 会报错?
常见原因有:使用制表符缩进、某个键多缩进或少缩进一个空格、同一个键出现两次,或用 --- 分隔了多个文档。错误信息会指出行号和列号,并显示附近的几行内容。每次只能转换一个 YAML 文档。
可以选择 2 或 4 个空格缩进吗?
可以,适用于 JSON 转 YAML。YAML 缩进菜单提供 2 或 4 个空格;更改后请再次点击“转换”。选择 4 个空格时,包含对象的列表项会把短横线单独放在一行。JSON 输出始终使用 2 个空格。
为什么大文件的 JSON 转 YAML 很慢?
该工具没有大小限制,但较大的 JSON 转 YAML 任务会迅速变慢。在我们使用同一代码的测试中,0.7 MB 用时 0.2 秒,2.9 MB 约 3 秒,7 MB 约 15 秒,期间页面可能会无响应。YAML 转 JSON 则更快。
转换 JSON 或 YAML 时,我的数据是私密的吗?
转换使用 js-yaml 库在你的设备上运行,所以你的 JSON 和 YAML 都留在页面中。分析数据会记录“转换”和“复制”等点击操作以及一次运行所用的时间。需要注意的是:解析失败时,发送到分析服务的错误文本可能会引用你输入内容中的几行。
JSON 转 YAML 功能:双向转换,输出整洁
使用 js-yaml 进行 JSON 转 YAML 或 YAML 转 JSON,可选择 2 或 4 个空格缩进,并能看到带行号和列号的解析错误。

JSON 转 YAML,缩进整洁
粘贴 JSON 并点击“转换”,即可得到块样式的 YAML:嵌套对象变为缩进的键,数组变为短横线列表。可在缩进菜单中选择每级 2 或 4 个空格。
- 2 或 4 个空格缩进
- 数组以短横线列表呈现
- 长文本在 80 个字符处折行

YAML 转 JSON,也可转回
切换到 YAML → JSON,可将配置文件转为使用 2 个空格缩进的 JSON。“交换”会把输出移到输入框并向另一个方向转换,方便你检查往返转换的结果。
- YAML 转 JSON,使用 2 个空格缩进
- 点击一次「交换」即可切换方向
- 自动解析锚点和合并键
该加引号的地方自动加上
YAML 可能读成其他类型的字符串,例如 yes、on、null、123 或 2024-01-01,在输出中会加上单引号,这样在任何 YAML 读取器中都会保持为文本。
多行字符串保持易读
含换行的字符串会变成 | 块,每行一行,而不是塞满 \n 的一长行。读回后得到的文本完全相同,换行也不例外。
错误提示带行号和列号
如果输入无法解析,你会看到原因和位置。YAML 错误会指出行号和列号,并显示周围的几行,例如使用制表符缩进的问题。
免费使用,无需账号
无需注册,也没有使用次数限制。js-yaml 库会随页面一起加载,因此每次转换都在你的设备上运行,而不是在服务器上。
JSON 转 YAML 的使用场景
当某个工具只能读取其中一种格式时,可以在 JSON 和 YAML 之间转换配置文件和 API 文件。
Kubernetes 与 Docker
把 kubectl 的 JSON 输出或 JSON 配置转为可作为清单提交的 YAML,或者把 YAML 清单转为 JSON 供脚本读取。
- 将 kubectl get -o json 的输出转为 YAML
- 以 JSON 形式编辑 Docker Compose 文件,再转换回去
- 部署前以 JSON 形式检查 Helm values
CI/CD 配置
为 GitHub Actions 或其他 CI 服务在 JSON 和 YAML 之间转换流水线配置。转换为 JSON 时 YAML 中的注释会被丢弃,所以请保留一份副本。
- 以 JSON 形式查看 GitHub Actions 工作流
- 按行定位制表符或错误缩进
- 根据 JSON 模板生成 YAML 配置
API 开发
根据你使用的工具,在 JSON 和 YAML 之间切换 OpenAPI 或 AsyncAPI 规范。$ref 仍然是普通的键,只有 YAML 锚点会被展开。
- 将 OpenAPI JSON 规范转为 YAML
- 将 YAML 规范转为 JSON,供代码工具使用
- 用“交换”往返转换规范并进行比较