TOML 转换
TOML 和 JSON 互相转换,报错会指出具体行列,顺便把配置里的键表数量数清楚。
日期时间会保留成 TOML 里的原生格式,导出成 JSON 时按 ISO 8601 字符串输出。
粘贴 TOML,右边会转成 JSON
TOML 和 JSON 的差别
TOML 是给配置写的,读起来像 ini:一段配置用 [table] 开头, 下面全是 键 = 值。它的数据类型比 JSON 多:除了字符串、数字、布尔和数组, 还有日期、时间、带时区的日期时间,以及「数组套表」这种写法, 所以 Cargo.toml、pyproject.toml 这类文件能写得比 JSON 干净很多。
JSON 没有日期类型,时间只能存成字符串;反过来 TOML 没有 null, 这就是为什么 JSON 里凡是值为 null 的字段,转 TOML 时都会被拦下来并指给你看是哪一项。 另外 JSON 顶层可以直接是数组,TOML 不行,顶层只能是键值对。
常见的踩坑点
第一,键的顺序。TOML 要求把属于某张表的键写在表头下面,不能先写 [a] 再回头写 a.x = 1,否则解析会报「重复定义」。从 JSON 转过来时, 工具已经按表归类排好了,但如果你手动改过顺序,记得把它改回去。
第二,字符串里的反斜杠。Windows 路径写在 TOML 的基本字符串里会被当成转义字符, 要用单引号字面量 'C:\Users\me' 才是原样输出。
第三,数字格式。TOML 支持下划线分隔的整数 1_000_000 和 十六进制 0x1F,转成 JSON 后都会变成普通十进制数字,所以要转回 TOML 时写法会变样。
为什么用在线工具不放心
配置里经常带密钥和数据库地址,这个顾虑很合理。本工具的解析和序列化完全在浏览器里跑, 输入内容不会发到服务器,断网也能用,你可以打开开发者工具的网络面板自己确认一遍。