PixConvert

免费在线 JSON 转 YAML 转换器

将 JSON 对象转换为易读的 YAML 语法。非常适合 DevOps 配置、Docker Compose 和 Kubernetes,无需上传到服务器。

YAML 缩进:

JSON 输入

YAML 输出

如何将 JSON 转换为 YAML

1

选择方向。

在顶部选择 JSON → YAML 或 YAML → JSON。切换时会清空两个编辑器,所以请在选好之后再粘贴输入内容。

2

粘贴并转换。

粘贴到左侧编辑器,如有需要可将 YAML 缩进设为 2 或 4,然后点击“转换”。结果会显示在右侧。

3

复制或交换。

点击“复制”获取结果。点击“交换模式”可把输出移到输入框,并向另一个方向转换回去。

常见问题

解答 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 对象转换为 2 空格缩进的 YAML,ports 以短横线列表显示

JSON 转 YAML,缩进整洁

粘贴 JSON 并点击“转换”,即可得到块样式的 YAML:嵌套对象变为缩进的键,数组变为短横线列表。可在缩进菜单中选择每级 2 或 4 个空格。

  • 2 或 4 个空格缩进
  • 数组以短横线列表呈现
  • 长文本在 80 个字符处折行
立即试用
YAML 转 JSON:锚点和合并键已解析,因此 prod 得到 retries 3,并带有双向切换箭头

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,供代码工具使用
  • 用“交换”往返转换规范并进行比较