JSON 转 TOML

转换器

把 JSON 转为强类型 TOML 配置,保留嵌套表、数组与日期类型,适合把接口配置改写为 pyproject.toml 与 Cargo.toml,类型语义不丢失。数组表与嵌套表会按规范重排,日期类型保留为原生日期。布尔与数字不会被转成字符串,避免类型语义丢失。数组元素类型会按样本推断。

已转换
JSON
16 行
TOML
14 行

关于 JSON 转 TOML

JSON 转 TOML 工具把常见的 JSON 数据结构无损转换为 TOML 格式,方便直接用于 Rust 的 Cargo、Python 的 Poetry、Go 项目的配置文件。TOML 比 JSON 更易读写,支持注释与清晰的段落分层,而 JSON 仍是接口与前端最通用的交换格式。本工具自动处理嵌套对象、数组与基本类型,遇到 TOML 不支持的复杂结构会给出可读提示,转换结果实时显示在右侧并支持一键复制。有两个边界需要知道:其一,TOML 没有 null 类型,值为 null 的键会被跳过并从结果消失;其二,键会按插入序保留,但极深的嵌套(超过 3-4 层)在 TOML 里的可读性会明显下降,建议考虑拆分配置。所有解析都在浏览器本地完成,数据不会上传到任何服务器,特别适合处理含敏感字段的配置与密钥文件。对于从 JSON 迁移到 TOML 的存量配置,它可以逐段核对字段映射是否完整无遗漏,也能把接口返回的样例改写成更易维护的声明式配置,让团队在版本库里 review 配置变更时更容易看懂真实意图。

把 JSON 配置迁移成 TOML,常见于从自研配置格式转向生态工具链的场景:TOML 的段头让配置结构显式可见,人在评审时更容易看出「这一项属于哪个模块」,同时它对日期时间有一等类型支持,适合承载带时间语义的配置项。 转换原理是解析 JSON 成对象树,再按 TOML 的规则输出:顶层对象变成一组键值对,嵌套对象变成段头,数组则按元素类型决定是普通数组还是表数组。最容易出错的地方正是数组——对象数组在 TOML 里要用双方括号表示,而标量数组用单方括号,自动转换若判断错误会产出无法解析的文件;转换后务必用解析器再读一遍确认可解析,而不是只看文本形态。 使用要点:把「看起来像数字或布尔值但其实是标识」的字段先加引号固定成字符串,尤其是版本号、以零开头的编号与取值恰为是或否的枚举,否则往返转换时类型可能变化。转换完成后核对键的总数与嵌套深度,并确认没有因为同名段头合并而丢失内容——TOML 里同名段头会追加而非覆盖,这一点与直觉相反,容易造成配置被悄悄改变语义。 边界与限制:注释无法从 JSON 迁移过来,说明性文字应写进字段值或另存文档。JSON 允许顶层是数组而 TOML 不允许,因此数组型配置必须先包一层包装键。空值表示也有差异,JSON 的空值在 TOML 里没有直接对应,需要约定用空字符串还是直接省略该键,跨工具消费时应把这条约定写进文档,避免不同语言的实现各自处理。 数据与隐私:这类配置通常含连接串与密钥。本工具在浏览器内完成转换,不上传内容且可离线使用;迁移生产配置时建议用脱敏样本先跑通转换流程,确认无误后再处理真实文件。

误用主要是类型与结构两处:JSON 里「看起来像数字或布尔值」的标识字段不加引号会被 TOML 按类型解释,往返一次类型就可能改变;结构上 JSON 顶层允许数组而 TOML 不允许,数组型配置必须先包一层包装键。此外 TOML 里同名段头会追加而非覆盖,与 JSON 的直觉相反,容易悄悄改变语义。

实现原理

转换解析 JSON 成树后按 TOML 规则输出:顶层映射成为一组键值对,嵌套映射成为段头,数组按元素类型决定是普通数组还是表数组。最需要注意的是 TOML 里同名段头会追加而非覆盖,而 JSON 顶层不允许是数组,因此数组型配置必须先包一层包装键。

输入{"a":{"b":1},"list":[{"x":1}]}
输出[a] b = 1 [[list]] x = 1(嵌套成为段头,对象数组用双方括号)

使用方法

  1. 打开「JSON 转 TOML」
  2. 选择源格式与目标格式
  3. 根据需要调整输出选项
  4. 点击「转换」按钮,结果实时显示
  5. 复制或导出结果

使用场景

  • 生成 Cargo 配置 — 把 JSON 描述的依赖列表转成 Cargo.toml 中的 [dependencies] 段落。
  • 迁移 Python 项目 — 将 setup.py 中的 JSON 化元数据转成 pyproject.toml 所需的 TOML 结构。
  • 配置格式统一 — 团队约定用 TOML 时,把历史的 JSON 配置批量转换过来。
  • 理解 TOML 表结构 — 通过 JSON↔TOML 对照,直观看懂嵌套表和表数组的写法。
  • 工具链对接 — 把 API 返回的 JSON 转 TOML 后供 Hugo、Netlify 等读取。

常见问题

JSON 的 null 怎么转?

TOML 规范没有 null 类型。本工具会跳过值为 null 的键,因为 TOML 无法表示空值,请注意转换后这些键会消失。

嵌套数组对象会变成什么?

对象数组会转成 TOML 的「表数组」语法 [[table]],这是 TOML 表达重复结构的标准方式。

深层嵌套支持吗?

支持,但 TOML 对极深嵌套的可读性不如 JSON。如果嵌套超过 3-4 层,建议考虑是否拆分配置。

日期时间如何处理?

JSON 里日期通常是字符串,转 TOML 后仍是字符串。TOML 原生支持的日期类型需要符合 RFC 3339 才会被识别。

键的顺序会变吗?

不会,转换保持插入顺序,方便你逐段对照原始 JSON 与结果是否一一对应。

想反向转换?

请使用本站的「TOML 转 JSON」工具。

转换后嵌套数组的结构变了?

TOML 对「对象数组」必须写成 [[array]] 段落形式,与 JSON 的嵌套写法不同;嵌套数组里的对象会展开成独立的段。结构语义等价,但视觉上差别大。解析回去是等价的,不是数据丢失。

键名里有空格或特殊字符怎么办?

TOML 允许带引号的键,工具会自动加引号;含点号的键会被转成嵌套表,这可能改变层级。如果键名本身含点且你希望保持平铺,需要手动给整段键加引号,否则会被解析成嵌套。

广告