工具
指南

JSON ↔ YAML 转换器

JSON

在 JSON 与 YAML 1.2 之间双向转换,实时校验并给出错误行列位置。

100% 客户端 无后端

不获取远程 URL;请直接粘贴你的 JSON。

输入
输出
输入 YAML 或 JSON 进行转换。
本页内容

YAML 与 JSON 互转是什么?#

YAML 和 JSON 描述的是同一类数据——嵌套的对象、列表、字符串、数字、布尔和 null,只是写法风格截然不同。JSON 严格且符号密集:每个字符串都要双引号、到处是花括号和方括号;YAML 则把这些引号和括号换成了缩进与短横线,可读性高到人愿意手写,所以配置文件、CI 流水线、容器清单大多用 YAML。

实际开发里你常常要在两者之间来回切:Kubernetes Chart 用 YAML 写,但 API 收的是 JSON;CI 配置是 YAML,而你手里的校验工具只吃 JSON;同事在聊天里贴了一段 YAML,你的脚本却要 JSON.parse。手动互转——重新缩进、补引号、把短横线换回方括号——是最容易埋下隐患的活:一个多余的逗号、一格错位的空格,整份数据就再也解析不出来。

本页在浏览器里双向完成转换。YAML 转 JSON,当你需要机器友好的严格格式;JSON 转 YAML,当你想要一份人能读得下去的配置文件。解析采用 YAML 1.2 核心模式(不会触发危险的对象实例化),出错时给出精确的行列号,并且故意关闭了长行折叠,让输出对 diff 友好。

怎么用#

  1. 用工具栏左侧的两段式开关选定方向
    • YAML → JSON(默认):左侧粘贴 YAML,右侧产出严格 JSON。
    • JSON → YAML:左侧粘贴 JSON,右侧产出缩进式 YAML。
  2. 选择缩进——24 空格,两侧输出的嵌套层级都由它控制。
  3. 想先看看效果,点 Sample 载入一段小例子;要清空两栏点 Clear
  4. 解析通过后右侧立即更新。下方状态栏会显示三种情况之一:成功并标注输出字节数、输入为空的提示、或者带 1 起始行列号的解析错误,直接指向出问题的那个字符。
  5. 点输出区头部的 Copy 取走结果。

输入一旦能解析,转换就发生,不需要额外点”生成”按钮——你修好输入,输出自然刷新。

主要特性#

  • 一个布局走两个方向。 同一对输入/输出栏同时承担两个方向,靠顶部的开关切换运行哪个解析器。
  • YAML 1.2 核心模式。 nulltrue/false、整数、浮点、带引号字符串,都按标准解析器的方式确定类型,而不是靠宽松的猜测。
  • 关闭长行折叠。 输出里的长行不会被折断或省略,所以拿去和仓库里的文件做 diff 时,看到的都是真实差异。
  • 精确的错误定位。 缩进错位、多余的冒号,都会以 行:列 形式报出,而不是一句笼统的”无法解析”。
  • 嵌套深度有上限。 深度嵌套的输入(典型的 YAML 炸弹式膨胀)会被截断,恶意或意外递归的文件不会冻住标签页。
  • 纯本地处理。 你的配置不会离开本页——根本没有后端可上传。超过约 1MB 时,繁重的解析会交给后台 Worker,保持界面流畅。

真实示例#

一个常见场景:用 YAML 写好的服务配置要塞进 JSON 请求体。把下面这段贴进左栏,方向选 YAML → JSON、缩进选 2

name: api-gateway
port: 8080
replicas: 3
targets:
  - host: example.com
    port: 443
  - host: cdn.example.com
    port: 8443
features:
  retries: true
  timeout_ms: 2500

右栏产出的就是可直接解析的严格 JSON:

{
  "name": "api-gateway",
  "port": 8080,
  "replicas": 3,
  "targets": [
    {
      "host": "example.com",
      "port": 443
    },
    {
      "host": "cdn.example.com",
      "port": 8443
    }
  ],
  "features": {
    "retries": true,
    "timeout_ms": 2500
  }
}

注意 YAML 里没加引号的 8080true3,到了 JSON 里分别变成了数字、布尔、数字——核心模式自动判定类型,你完全不用管。把方向切到 JSON → YAML,再把这段 JSON 贴回去:你会得到用短横线表示列表项的同样嵌套结构,这正是你愿意提交进配置仓库的形态。需要进一步校验结构,可以配合 /zh-CN/json/schema/ 一起用。

常见问题#

来回转换之后,我的 YAML 注释还在吗?#

不在了。JSON 根本没有注释语法,所以 YAML 里的 # 注释 在走向 JSON 的过程中会被读掉然后丢弃——无处可放。注释在输入时是被容忍的(绝不会因此报错),但跨不过这道格式边界。如果注释对你很重要,就把 YAML 当作唯一事实来源,每次需要时再生成 JSON。

支持多文档 YAML(用 --- 分隔的文件)吗?#

会处理文档流并返回首个文档。绝大多数配置和清单文件都是单文档,所以极少遇到这个问题;如果你确实有一份多文档流,按 --- 切开分别转换即可。

配置文件到底该选 YAML 还是 JSON?#

需要人手写、看重可读性和缩进表达嵌套时选 YAML;需要机器生成、解析器消费,或者看重严格性时选 JSON——JSON 每个值只有一种合法写法,没有歧义可调试。这个工具存在的意义,就是让你不必二选一。

报错写着”第 4 行第 5 列”,但那一行看着没问题,怎么回事?#

几乎总是缩进的问题。YAML 的结构完全由行首空格决定,所以一个子项向左或向右多缩了一格、或者 tab 和空格混用,错误往往要等到解析器读到下一个 token 时才暴露出来,于是报在了真正出问题那一行的后面。先去查报错行号上一行的缩进。