⭐ 我的收藏
🕘 最近使用

YAML 和 JSON 有什么区别?

YAML 用缩进表示层级,适合人读的配置(Docker、CI、k8s);JSON 用花括号,是 Web API 的标准数据格式。

两个方向的转换效果不一样

JSON 转 YAML:不丢东西。JSON 能表达的结构 YAML 都能表达,转过去再转回来,内容和原来完全一致。

YAML 转 JSON:会丢一部分,但丢的是「写法」不是「数据」。键值、嵌套、数组、字符串内容全部原样保留;下面四样会消失或改变:

  • 注释会消失。JSON 语法里没有注释,这是最常被问到的一点。
  • 锚点和别名的共享关系会被展开。&defaults 与 *defaults 会被替换成实际的值填进去——数据等价,但不再是「引用同一份」,改一处不再自动同步另一处。
  • 不加引号的日期会被识别成日期。date: 2026-01-01 会输出成 "2026-01-01T00:00:00.000Z"。
  • 不加引号的数字会按数字处理。version: 1.10 会变成 1.1。

想原样保留,给值加上英文引号

写成 version: "1.10"、date: "2026-01-01",加了引号它们就是字符串,不会被当成数字或日期。转出来的 JSON 里也是原样的 "1.10" 和 "2026-01-01"。

另外,同一个键写两次会直接报错指出行号,不会悄悄用后一个覆盖前一个。

常见问题

Q:转换时格式报错怎么办?

A:多数报错是缩进或引号问题。YAML 严格依赖缩进(建议 2 空格),字符串含特殊字符要用引号;本工具会精确到行号提示错误位置,按提示修正即可。

Q:转换后数据会丢失吗?

A:YAML 转 JSON 时,键值、嵌套、数组、字符串都原样保留;日期(如 2026-01-01)原样保留,不会再被转成 2026-01-01T00:00:00.000Z;数字的写法也保留,version: 1.10 仍是 1.10、不会变成 1.1;超过 15 位的长整数(订单号、雪花 ID)同样保留原文,不会被截断。会变的有两样:注释会消失(JSON 语法里没有注释),工具会提示;锚点与别名会被展开成实际的值填进去,数据等价但不再是引用同一份。JSON 转 YAML 不丢东西;唯一要注意的是 JSON 里的长数字在浏览器解析时就已经按浮点处理,本工具会检测并提示「已被截断」。全部在浏览器本地完成。

Q:支持多大的文件?

A:常规配置文件(几十 KB)处理顺畅;纯本地解析,不上传服务器。