JSON 转 TOML

将 JSON 文档转换为 TOML,可配置缩进和美化开关。

将 JSON 文档转换为 TOML,可配置缩进和美化开关。 将 JSON 文档转换为 TOML,可配置缩进和美化开关。

输出

背景知识

为什么把 JSON 转成 TOML

JSON 在线协议中无处不在,但现代配置文件(Cargo、pyproject.toml、GitHub Actions、uv 等)大多用 TOML。当把 API 返回的 JSON 片段复制到配置文件时,通常要手工翻译语法:大括号变成节、方括号变成数组、逗号变换行、带引号的键变成裸键。

转换器自动完成这种翻译,你粘贴 API 响应、复制 TOML 输出即可。

关键特性

大多数转换器默认保留 JSON 对象顺序。TOML 允许重新排列节,因此“排序键”选项在想要跨运行稳定 diff 时很有用。缩进控制能匹配项目风格(两空格或四空格)。

对于 TOML 中的表数组,若 JSON 数组包含统一对象则输出内联形式 key = [ ... ];若类型混合或重复同一模式则输出表头形式 [[section]]。这是唯一不能纯机械转换的场景。

工作流建议

提交 TOML 前请确认 JSON 中使用的键都是合法的 TOML 裸键(无空格、无前导数字、无前导连字符)。转换器原样保留键名,不会改名。转换完成后,粘贴到编辑器并运行项目 linter,以捕获转换器不感知的风格问题。

自研实现。JSON 用浏览器原生 JSON.parse 解析,输出由 BSD-3 协议的 smol-toml 库(已内置)生成。所有处理均在本地完成,不会上传。

常见问题

转换器支持嵌套对象吗?
支持。嵌套 JSON 对象会变成嵌套 TOML 表。转换器保留层级深度,非常深的嵌套会相应展开成 [[section.sub]] 表头。
基本类型数组呢?
基本类型(数字、字符串、布尔)的数组会变成 TOML 的内联数组。TOML 要求数组同质,混合类型的数组会被底层解析器拒绝。
JSON 的 null 值会保留吗?
TOML 没有 null 字面量。转换器会丢弃 null 并给出提示;若需记录“缺失”,请在转换前改用空字符串或哨兵值。
为什么输出里没有原 JSON 的注释?
JSON 不支持注释。如果需要在 TOML 中保留注释,请在转换后手动添加。
转换器会改变键的顺序吗?
不会。默认按 JSON 中的顺序输出。需要稳定可对比的字母顺序时,请开启排序选项。
我的 JSON 会被发送到哪里吗?
不会。转换完全在浏览器内通过原生 JSON.parse 与内置 smol-toml 库完成。