YAML转JSON
YAML 转 JSON、JSON 转 YAML 双向转换:块缩进、流式集合、块标量、锚点与多文档都能解析,报错带行列号并把原文那一行指出来
转换选项
转换在本机浏览器完成,内容不会上传。Ctrl+Enter 立即转换。
输入 YAML
把 .yml / .yaml / .json 文件拖到此处,或点击选择文件
等待输入
结果
树视图
错误详情
JSON 结果
工具介绍
YAML 给人读、JSON 给机器读,两边来回搬运是配置工作的日常。麻烦在于 YAML 的规则比看起来多:缩进错一个空格就换层级,| 和 > 对换行的处理不一样,yes 会被当成布尔值,Tab 干脆不合法。这个工具把解析写成显式规则,出错时告诉你第几行第几列、把原文那一行指出来,而不是只回一句「解析失败」。
能解析什么
- 块结构:块映射与块序列、序列里再嵌映射、任意深度缩进;同层级键值对齐方式错了会按位置报错
- 流式集合:
{a: 1, b: [2, 3]}这类一行写法,可以跨行、可以和块结构混用 - 标量:单引号(连写两个单引号表示一个引号)、双引号(
\t\n\\"等转义)、无引号纯文本,整数、负数、小数、科学计数、0x十六进制、null与~与空值、true/false - 块标量:
|保留换行、>折叠换行,配合-去掉尾部换行、+连尾部空行也留着,缩进块内不再做转义 - 锚点与引用:
&name定义、*name复用、合并键<<: *base把公共字段并进当前映射,转换结果里全部展开成实际值 - 注释与多文档:
#注释与空行不影响解析;一个文件里用---分隔多个文档,打开多文档模式后结果输出为数组 - 类型标签:
!!str、!!int、!!float、!!bool、!!seq、!!map会按标签指定的类型处理,写!!str 42出来就是字符串
四个开关的作用
| 选项 | 取值 | 影响 |
|---|---|---|
| 缩进 | 2 / 4 / 8 空格、Tab | 控制输出的嵌套缩进宽度。转 JSON 时选 Tab 会真的用制表符缩进;转 YAML 时选 Tab 会明确提示 YAML 规定缩进只能用空格 |
| JSON 输出 | 格式化 / 压缩 | 压缩模式一行出完,适合塞进配置项或命令行参数 |
| 严格模式 | 开 / 关 | 打开后布尔只认 true/false,yes no on off 一律按字符串保留 |
| 多文档 | 开 / 关 | 按 --- 切成多个文档,结果输出为数组;不开时一旦检测到多个文档就直接报错并提醒勾选,不会只转第一个却让你以为转完了 |
看结果的三个面板
- 结果:转换产物,可复制或下载成文件,方向切换后扩展名跟着变
- 树视图:可折叠,每个节点标出类型与条目数,点一行就把它的节点路径显示在上方并支持一键复制——排查配置时把这个路径报给别人,比截图说「第三层那个」省事得多
- 错误详情:行号、列号、原文那一行加指向符,多个问题会列成清单
输入方式
- 直接把
.yml、.yaml、.json、.txt文件拖到页面虚线框上,或者点击选择文件 - 在输入区
Ctrl+V粘贴内容即时转换,也可以按Ctrl+Enter强制立刻重算 - 「交换方向」按钮把当前结果原样送到另一侧继续处理,来回对照格式差异很省事
常见问题
- 报「mapping values are not allowed here」是什么意思?最常见两种情况:缩进比上层键多而没构成合法结构;或者值里出现未加引号的冒号加空格,例如把
url: http://a写成note: 见 http: a。给值加上引号就行,报错面板会指出具体行列 - 能用 Tab 缩进吗?不能。YAML 规定缩进只能用空格,混进 Tab 会被明确指出位置。编辑器里建议把
.yml设成空格缩进 - 哪些写法不在实现范围内?显式键(一行写
? 键、下一行写: 值)会直接报错并指出行号,不会静默丢节点;不认识的!!标签会给一条提示后按内容本身的类型读取;...文档结束标记后面必须紧跟---,否则同样报错到行 - 为什么
yes变成了true?YAML 1.1 把yes、on这类写法当布尔值,默认行为跟多数解析器一致。想让它们保持字符串就勾选严格模式,或者直接给值加引号 - 注释会保留吗?转成 JSON 时不会——JSON 语法里没有注释。反向转 YAML 时也只会保留值本身,原来的注释与文档结构说明得自己补
- 锚点会不会被展开?会。别名与合并键在结果里展开成实际内容,所以 JSON 里没有引用概念;改锚点定义会影响所有引用它的节点
- 日期会变成什么?JSON 没有日期类型,日期时间标量按字符串输出,不会自动换算成时间戳。反向写 YAML 时,形如
2026-10-01、12:30:00的字符串会自动加引号,免得别的解析器把它们读成日期或六十进制数字 - 同名键出现两次怎么办?后者覆盖前者,这与主流解析器一致。需要同时保留两份值时请改键名
- 内容会上传吗?不会。解析、生成、树视图、下载全在浏览器里完成,页面不发送任何请求,内网与断网都能用
拿到 JSON 后要继续排版用 JSON 格式化;层级太深想边看边收录用 JSON 层级查看;转成 PHP 配置数组用 JSON 转 PHP;导出表格用 JSON 转 CSV;配置里的 JS 片段排版见 JS 代码格式化;改完一版想对比差异用 文本对比。