博客
简体中文

JSON 转 YAML 在线工具 — JSON YAML 格式转换

把 JSON 转成 YAML(缩进选择、键排序、错误定位)

在浏览器中处理 · 不上传任何内容

YAML 结果

功能简介

YAML 是一种便于人阅读和编辑的配置格式,Kubernetes 清单、GitHub Actions、Docker Compose 等众多工具都在用。手上的 API 响应或配置是 JSON、又需要 YAML 时,粘贴到这里即可,粘贴后立刻出结果。

使用方法

  1. 把 JSON 粘贴到输入框。
  2. 选择 2 或 4 个空格缩进。大多数 YAML 工具习惯用 2 个空格。
  3. 想让每一层的键都按字母顺序排列,就开启“键排序”。
  4. 复制结果。JSON 有错误时会显示行号和列号。

工作原理

  • 输入是符合 RFC 8259 的严格 JSON。输出由 js-yaml 库生成,兼容 YAML 1.2 核心模式(core schema)。
  • 可能被读成其他类型的字符串,例如 true、null、123、007,会自动加引号,往返转换时类型不变。
  • 中文、日文、韩文和 emoji 原样输出,不做转义。
  • 自动折行已关闭;同一个值出现多次时会每次都完整写出,不使用锚点和别名(&、*)。
  • 空数组写成 [],空对象写成 {}。顶层是字符串、数字等标量时也能转换。
  • 超过 2^53 的整数在读取输入时就会被舍入,因此会显示警告。

示例

输入:

{"name":"app","ports":[80,443],"owner":{"姓名":"张三"},"debug":false,"version":"1.0"}

结果:

name: app
ports:
  - 80
  - 443
owner:
  姓名: 张三
debug: false
version: '1.0'

常见问题

把 YAML 再转回 JSON,数据还是一样的吗?

结构和值都会一致。像 "true"、"123" 这类可能被读成其他类型的字符串会加上引号,保证仍是字符串。除非开启键排序,否则键的顺序保持不变。

很长的句子会被折成多行吗?

不会。自动折行已关闭,字符串始终保持在一行,不会被拆开。包含换行的字符串可能会写成 YAML 块标量。

JSON 错误是怎么提示的?

会显示第一个破坏语法的字符所在的行号和列号。末尾多余的逗号、注释等 JSON 不允许的写法也会报错。

超大整数安全吗?

输入由 JavaScript 读取,超过 9007199254740991(2^53-1)的整数会被舍入。发生这种情况时会显示警告,请把这类数字写成字符串。

没找到想要的工具?