返回
YAML/TOML 结构化比较
格式化
正在载入
正在加载工具
工具代码会在打开时按需载入,请稍候。
本工具的全部运算都发生在你的浏览器中,输入内容不会发送到任何服务器。
关于这个工具
粘贴两份配置,分别选择 YAML 或 TOML,通过一次性本地工作线程比较规范化类型和值。整数 1、浮点数 1.0 和字符串 "1" 互不等同;忽略映射键顺序和注释,序列按索引比较。本工具不会转换或改写原始配置。
常见用途
- 审查配置改变,忽略仅键顺序不同的情况。
- 比较 YAML 和 TOML,识别普通 JSON 可能掩盖的类型差异。
- 检查本地日期和 UTC 时刻,审阅后分享完整类型报告。
使用方法
- 1.粘贴左右文档并分别选择格式,可载入类型或日期示例。
- 2.运行比较,检查 JSON Pointer 路径、改变种类与类型;结果较多时切换页面。
- 3.审阅敏感值后下载两份完整规范化树和全部差异。编辑输入会使旧报告失效。
可执行比较示例
整数与浮点数
Left (yaml): n: 1 Right (toml): n=1.0
/n: type integer -> float
数值大小相同,也不会忽略整数与浮点数的类型区别。
不同偏移的相同时刻
Left (toml): x=2026-10-10T12:30:00+08:00 Right (toml): x=2026-10-10T04:30:00Z
equal
两个日期时间代表同一时刻,不报告差异。
日期与文本
Left (yaml): day: 2026-10-10 Right (toml): day=2026-10-10
/day: type string -> localDate
YAML core 将未加标签的日期识别为文本,TOML 具有本地日期类型。
路径转义与 Unicode
Left (yaml): "a/b~c": 日本語 · 中文 · 𠮷 Right (toml): "a/b~c"="changed"
/a~1b~0c: value string -> string
JSON Pointer 转义斜杠与波浪号,Unicode 值完整保留。
限制与说明
- YAML 仅支持单份 YAML 1.2 core 文档、字符串映射键以及 !!str、!!null、!!bool、!!int、!!float、!!map、!!seq 核心标签。拒绝别名、合并键 <<、YAML 1.1 指令、复杂或非字符串键、自定义标签以及 timestamp/binary/set 标签,并给出诊断。允许未使用的锚点,不展开任何别名。
- TOML 1.1 支持表、点分键、内联表、表数组、多行字符串和四种日期时间。整数按有符号 64 位 BigInt 处理,浮点数使用 JavaScript binary64,可能舍入;NaN、无穷大和负零保留文本值。
- 带偏移日期时间按 UTC 时刻比较,不保留原偏移;本地日期、时间和日期时间保留独立类型,不假设时区。Temporal 验证日历日期并保留最多 9 位小数秒,超过 9 位的小数秒会被拒绝。拒绝含 :60 的闰秒日期,避免归并为 :59;YAML core 日期仍为字符串,不支持 !!timestamp。
- 每份输入上限为 UTF-8 128 KiB / UTF-16 131,072 单元、深度 64、节点 10,000;差异最多 2,000 项、完整 JSON 最多 2,000,000 UTF-8 字节。一次性工作线程限时 8 秒,超限不返回部分报告。
- 映射按键排序,不做 Unicode 规范化;序列按位置比较,不检测移动。容器新增、删除或类型改变显示一行摘要,完整值保留在导出的两份类型树中。JSON Pointer 路径转义 ~ 和 /,每项预览 1,024 个 UTF-16 单元,每页 100 项。编辑输入、格式或语言、交换和取消都会使导出失效。 本地处理,不保存输入,不执行构造函数、解析远程引用、加载资源或将输入渲染为 HTML。JSON 包含完整规范化值,可能暴露密钥;不会保留注释、原始字节、数值写法或原日期偏移。
常见问题
为什么 1 与 1.0 不相等?
整数和浮点数是不同的结构化类型,JSON 使用带类型的文本保留大整数和特殊浮点值。
YAML 别名或自定义标签会执行代码吗?
不会安装自定义构造函数。别名节点在转换或展开前被拒绝;不支持的标签显示名称和路径。
YAML 日期为什么与 TOML 日期不同?
YAML 1.2 core 将未加标签的日期识别为字符串;TOML 分别定义本地日期、本地时间、本地日期时间和带偏移日期时间。
预览省略的值会在 JSON 中保留吗?
成功报告保留两份完整类型树和全部已接受差异,超限时不会提供部分下载。