YAML ↔ JSON 互转
格式化所有处理都在浏览器本地完成,数据不上传服务器
输入
把文件拖到这里可直接载入
输出
把一份 YAML 配置转成 JSON,或反过来。多文档(用 --- 分隔的那种,k8s 的一份配置里放好几个资源)会解析成 JSON 数组而不是只转第一个;锚点、别名与 << 合并键都会展开成实际内容,而不是把 << 原样留下当成一个键名。解析用的是完整的 YAML 实现,所以多行标量、流式写法、隐式类型这些边角都能正确处理 —— 自己写一个「够用」的子集,迟早会在某个输入上静默解析成另一个意思,而用户拿这份配置去部署时已经没有任何线索了。出错时会给出行与列。
功能
- 两个方向:YAML 转 JSON、JSON 转 YAML,方向可自动判断也可手动指定
- 多文档 YAML 解析成 JSON 数组,不会只转第一个文档
- 锚点与别名展开成实际内容,<< 合并键按规范展开
- 大整数按 BigInt 处理:超过 2^53 的整数以字符串输出,位数一个不丢
- 解析错误指到具体的行与列,而不是一句「格式不对」
- 输出形态可选:逐层展开,或压成一行(紧凑);JSON 缩进支持 2 / 4 空格与制表符
- 输出带语法着色,长配置一眼能看清结构
使用方法
- 把 YAML 或 JSON 粘进输入框 —— 能解析成 JSON 的按 JSON 处理,其余按 YAML
- 结果实时出现,方向也可以手动指定
- 需要压成一行就选「紧凑」,需要调缩进就选缩进方式
- 点复制取走结果
常见问题
- 为什么注释、锚点和原始排版都不见了?
- JSON 里没有可以承载注释与锚点的结构 —— 它只有对象、数组和标量。锚点与别名会被展开成它们指向的实际内容(这是有损但语义正确的转换),注释则只能丢弃。如果这份注释很重要,请在转换后把它挪到 JSON 之外保存。
- 为什么大整数在 JSON 里变成了字符串?
- 因为 JSON 没有大整数类型,而 JavaScript 的数字超过 2^53 之后相邻整数就无法区分了:9007199254740993 会被静默变成 ...992。与其输出一个看起来正常、其实已经错了一位的数字,不如输出成字符串 —— 类型变了,但值一个字符不差,而且你在结果里看得见这个变化。
- YAML 1.1 里的 yes / no 在这里是布尔吗?
- 不是。这里按 YAML 1.2 处理:yes、no、on、off 都是普通字符串,只有 true 和 false 才是布尔。这一点很重要 —— 拿 1.1 的解析器读同样一份文件,`password: no` 会变成布尔值,然后你的密码就成了 false。
- 内容会上传吗?
- 不会。解析与转换全在浏览器里完成,页面不发送任何请求 —— 配置文件里常常有密钥、连接串和内部地址,它们不会离开这台设备。
相关工具
JSON 格式化
格式化在线 JSON 格式化与校验工具:树形折叠浏览、搜索键值、逐节点改值与删除、语法错误定位到具体行列,输入框带行号与高亮。全部在浏览器本地完成。
JSON 转代码
格式化把 JSON 样本转成 TypeScript interface、Go struct、Java class 或 Rust struct:不齐的键标成可选、类型冲突退化为联合类型。全程在浏览器本地生成。
XML 格式化
格式化在线 XML 格式化、压缩与属性排序:按标签层级缩进,属性可按名字排序(对比两份 XML 时用)。全程在浏览器本地完成。
SQL 格式化
格式化在线 SQL 格式化:关键字统一大小写、按 SELECT / FROM / WHERE 等子句换行缩进、子查询逐层展开,压缩模式去掉多余空白与注释。语句不上传服务器。
JSON5 转换
格式化把 JSON5 解析成标准 JSON:注释、无引号键、单引号、尾逗号、十六进制、Infinity 都支持,错误指出行列。全部在浏览器本地完成。
HTML 格式化
格式化在线 HTML 格式化与压缩:按标签层级缩进,文本与行内标签保持同一行,script 与 pre 内容原样保留。代码不出浏览器,不上传服务器。