TOML 与 JSON 转换器
双向转换 TOML 1.1 与 JSON,明确处理数值、日期和 null
使用 TOML 1.1 语法,支持嵌套表、表数组、多行字符串和混合类型数组。日期时间输出为 ISO 风格字符串,保留本地日期/时间种类和原偏移,精度截断到毫秒,不支持 :60 闰秒。JSON 转 TOML 要求对象根,任何位置的 null 都报错,嵌套对象输出为内联表;日期样式字符串仍是字符串。
输入 ≤2 MiB,输出和名称映射各 ≤8 MiB,深度 ≤128,值总数 ≤100000,键或生成路径 ≤8192 字符,数字文本 ≤256 字符。拒绝重复键、名称冲突、负零、非有限数、NUL 和未配对 Unicode 代理项。JSON 数字须能等值回写,整数限 ±9007199254740991。
配置在当前页面本地处理,不上传内容、不保存输入草稿;统计事件不包含键名、值或转换结果。复制或下载后,请按目标应用的实际配置规则复核。
工具说明
TOML 与 JSON 转换支持 TOML 1.1 嵌套表、点号键、表数组、多行字符串、内联表和混合类型数组。默认将大整数输出为精确十进制字符串,关闭该选项后会拒绝大整数。非有限数、负零、不安全浮点数和不可能的日历日期都会报错。日期输出为 ISO 风格字符串,保留本地日期/时间种类和原偏移,小数秒按 TOML 允许的方式截断到毫秒。反向转换要求严格 JSON 对象,在任意深度遇到 null 都报错;嵌套对象写为内联表,日期样式字符串仍为字符串。注释与排版不保留,TOML 日期或大整数变成 JSON 字符串后,不会自动恢复原类型。转换在当前页面本地完成,不上传配置、不保存输入草稿,统计事件不包含键名和值。复制和下载包含当前完整结果,页面预览有长度上限。输入限 2 MiB、深度 128、值总数 100000、键或生成路径 8192 字符,输出和名称映射各限 8 MiB;数字类型文本限 256 字符。不支持 NUL 和未配对 Unicode 代理项。 此转换器不支持 :60 闰秒。
场景配方
把带日期的任务配置迁移到 JSON 流程
目标:精确保留大整数任务 ID,并核对日期类型转换。
- 输入示例 TOML,保持开启“大整数输出为字符串”。
- 转换后确认 id="9007199254740993"、when="2024-02-29T07:32:00.123+08:00" 和混合 values 数组,并注意最后三位小数秒已截断。
- 把 JSON 粘贴到 JSON 转 TOML 模式,核对 id 和 when 仍为字符串;只有确认消费应用需要的类型后,才恢复 TOML 原生类型。
结果:得到精确的大 ID 文本、规则明确的毫秒日期表示,并明确核对反向转换的类型变化。
失败门诊(高频踩坑)
null 字段或非有限 TOML 数字导致转换中止
原因:TOML 没有 null,JSON 不能保留 NaN 或无穷大。静默省略对象字段或将数字变成 null 都会改变配置。
修复:JSON 转 TOML 前明确移除或替换 null;异常数值需要事先约定字符串表示,工具不会自行选取替代值。
日期丢失毫秒之后的小数位,或转回后仍带引号
原因:解析器保留毫秒精度,这是 TOML 允许的行为。JSON 没有日期或 BigInt 类型,这些值会变为字符串,反向转换没有可靠类型标记。
修复:需要精确日期写法或原生类型时保留原始 TOML,恢复类型前核对源配置约束。混合类型数组是合法 TOML,不应仅因元素类型不同而删除。
生产可用片段
大整数与带偏移日期的转换结果
text
TOML:
id = 9007199254740993
when = 2024-02-29T07:32:00.123456+08:00
values = [1, "two", true]
JSON:
{"id":"9007199254740993","when":"2024-02-29T07:32:00.123+08:00","values":[1,"two",true]}
JSON 转 TOML:
"id" = "9007199254740993"
"when" = "2024-02-29T07:32:00.123+08:00"
"values" = [1, "two", true]常见问题
保留 TOML 1.1 特性并支持混合数组吗?
支持嵌套表、表数组、点号与引号键、多行字符串、多行内联表、简写本地时间及 TOML 1.1 转义。混合类型数组合法;TOML 1.0 读取器可能拒绝仅在 1.1 中合法的语法。
日期和小数秒如何表示?
日期时间转成 ISO 风格 JSON 字符串:本地日期只保留日期,本地时间只保留时间,本地日期时间没有偏移,带偏移的日期时间保留原偏移。无效日历日期会报错。超过毫秒的小数位会截断,这是 TOML 允许的行为;原小数精度与 TOML 类型标记不保留。 不支持 :60 闰秒。
大整数、小数、无穷大和 NaN 如何处理?
默认把 TOML 大整数输出为精确十进制字符串,关闭选项后报错。JSON 数字必须能按相同十进制值回写,整数必须安全。NaN、无穷大、负零、舍入、上溢和下溢都报错。数字类型文本最多 256 字符;高精度十进制数据应明确使用字符串。
任意 JSON 都能转换为 TOML 吗?
根值必须是对象,转换前拒绝解码后重复的键和不安全数字。TOML 没有 null,因此对象或数组任何深度的 null 都报错。支持空对象、空数组、混合数组和特殊键;空根对象对应有效的空 TOML 文档。
JSON 转回 TOML 会恢复日期、整数类型或注释吗?
不会。JSON 字符串仍写为 TOML 字符串,包括日期样式字符串和由大整数转换的十进制字符串。嵌套对象写为内联表。不会重建注释、源排版或原数值写法;应检查接收应用期望的类型。
会保存或上传配置吗,有哪些限制?
转换在当前页面本地完成,不上传配置、不保存输入草稿,统计事件不包含键名和值。复制和下载包含当前完整结果,页面预览有长度上限。输入限 2 MiB、深度 128、值总数 100000、键或生成路径 8192 字符,输出和名称映射各限 8 MiB;数字类型文本限 256 字符。不支持 NUL 和未配对 Unicode 代理项。
继续浏览