JSON 转 TOML
把 JSON 转成 TOML:支持嵌套对象、数组与数组表([[table]]),可按键排序、把整数写成浮点;JSON 语法错误会指出行列,null 与顶层数组这类 TOML 不支持的结构会给出替代建议。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
选项
TOML
这个工具能做什么
- 写 Rust 的 Cargo.toml、Python 的 pyproject.toml、Hugo 或 Zola 的站点配置时,把习惯用的 JSON 结构转成 TOML。
- 嵌套对象自动变成 [table] 子表,对象数组变成 [[items]] 数组表,不用自己判断该写点号路径还是表头。
- 转换前先做结构校验:TOML 没有 null,遇到 null 会告诉你出问题的具体路径并给出替代写法建议,而不是抛一个含糊的解析错误。
- 需要固定配置文件的键顺序时勾选「按键名排序」,需要强调数值类型时勾选「整数写成浮点」(1 变成 1.0)。
示例
输入
{"title":"UniKit","server":{"host":"localhost","port":8080}}输出
title = "UniKit" [server] host = "localhost" port = 8080
顶层必须是对象;TOML 的标量键必须写在所有子表之前,所以简单键在前、[table] 在后是 TOML 规范决定的,不是工具的排版选择。
常见问题
JSON 里有 null 怎么办?
TOML 没有 null 类型,工具会报错并指出 null 所在的具体路径(例如 user.email)。替代做法:把 null 换成空字符串 ""、0 或 false,或者直接删掉这个键。
顶层是数组或单个值可以吗?
不行。TOML 文档的顶层必须是一张表(键值对集合),所以顶层数组和顶层标量都会被拒绝并给出建议:把数组包进一个键写成 { "items": [ … ] },元素是对象时还可以写成 [[items]] 数组表。
为什么输出的键顺序和我的 JSON 不一样?
TOML 要求所有简单键值对出现在子表之前,所以工具会先把叶子值排好,再输出 [table] 段落。需要完全确定的顺序时勾选「按键名排序」,会递归按键名字典序排列(数组内部顺序保持不变)。
数字会丢精度吗?
不会。JSON 数字按 JavaScript 的双精度浮点解析,超过 2^53 的整数本身在 JSON.parse 阶段就已经不精确了,这是 JSON 解析的固有限制。TOML 输出会原样写出解析后的数值。
我的 JSON 会被上传吗?
不会。解析、校验与序列化都在浏览器本地完成,不发网络请求,断网可用。
关键词:jsontomlconvertserializejson 转 toml配置格式转换序列化table