toolgarden.xyz
EN

JSON ↔ YAML

完成 JSON 与 YAML 格式的双向互转,正确处理注释和多层嵌套结构,浏览器本地处理,适合配置文件互换。

JSON

YAML

工具说明

JSON 和 YAML 都能表示对象、数组、字符串、数字、布尔值与空值,但书写方式不同。YAML 依靠缩进和短横线表达层级,适合人工维护;JSON 使用明确的括号与引号,更适合程序交换和严格校验。

双向转换会保留数据结构,不保证保留原文件的注释、空行、锚点写法或标量样式。YAML 中可被解析成日期、数字或布尔值的文本也可能改变类型,因此配置迁移后应检查关键字段。

使用步骤

  1. 选择转换方向

    根据当前输入选择 JSON 转 YAML 或 YAML 转 JSON,工具不会依赖文件扩展名猜测。

  2. 粘贴并解析

    输入完整文档;错误信息通常会指出缩进层级、冒号或引号附近的问题。

  3. 核对类型并导出

    重点检查日期、前导零、布尔值和空值,确认无误后复制转换结果。

输入与输出示例

同一份配置的两种写法。YAML 用缩进代替括号,并且可以带注释。

JSON
{
  "service": "api",
  "replicas": 3,
  "env": { "LOG_LEVEL": "debug" }
}
YAML
service: api
replicas: 3
env:
  LOG_LEVEL: debug

支持范围与限制

转换方向
JSON → YAML 与 YAML → JSON 双向
YAML 独有能力
注释、锚点与引用、多文档(---):转成 JSON 时这些都会丢失
缩进敏感
YAML 用缩进表示层级,混用制表符和空格是最常见的解析失败原因
容易踩的坑
YAML 里未加引号的 yes / no / on / off 会被解析成布尔值,`1.0` 会变成数字
前导零
邮编、电话号码这类以 0 开头的值必须加引号,否则会被当作数字丢掉前导零
典型用途
在服务配置、Kubernetes 清单、CI 流水线定义和接口数据之间互转

典型使用场景

  • 维护部署配置

    把程序生成的 JSON 转成更适合人工阅读的 YAML,用于 CI、容器编排或静态站点配置。

  • 接入只收 JSON 的 API

    把现有 YAML 配置转换成严格 JSON,再交给接口、校验器或前端代码使用。

  • 把接口响应转成可读的配置草稿

    从 API 拿到的 JSON 转成 YAML 后可以加注释说明每个字段的含义,作为团队内部文档。

使用前需要知道的事

  • 转换目标是等价数据结构,不是原文格式复制。注释、空行和键的排版方式可能消失。
  • YAML 使用空格表示层级,Tab 缩进容易造成解析失败,建议统一使用两个或四个空格。
  • 锚点与别名在解析后会展开为普通数据,循环引用不能表示为标准 JSON。

相关概念

scalar
YAML 中不可再分的单个值,例如字符串、数字、布尔值或 null。
anchor and alias
YAML 复用一段数据的机制,使用 & 定义锚点、使用 * 引用;JSON 没有对应语法。

常见问题

JSON 和 YAML 可以双向互转吗?
可以。工具支持 JSON → YAML 与 YAML → JSON 两个方向,粘贴任意一种格式即可实时转换。
转换会上传我的配置文件吗?
不会。转换在浏览器本地完成,Kubernetes、docker-compose 等敏感配置不会离开你的电脑。
适合哪些场景?
常用于在 API 数据(JSON)和 CI / 云原生配置(YAML)之间快速切换,或把接口返回整理成可读的 YAML。
转成 JSON 后注释为什么消失了?
标准 JSON 没有注释语法,无处存放。这是格式限制而不是工具丢内容:需要保留注释就保留原始 YAML 文件,只把转换结果用于必须是 JSON 的场景。
YAML 里的 no 和 off 为什么变成了 false?
YAML 会把未加引号的 yes / no / on / off 解析成布尔值。如果它们本来是字符串(比如国家代码 NO 表示挪威),必须加引号。同理,以 0 开头的邮编不加引号会被当作数字丢掉前导零。