跳到主内容
UniKit

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

同类工具