TOML 转 JSON

转换器

把 TOML 文档解析为 JSON,完整还原表、数组、内联表与多行字符串,适合把 Cargo.toml 与 pyproject.toml 喂给需 JSON 输入的脚本。日期与时间会按要求输出为字符串,内联表与多行字符串一并还原。数组表会转成对象数组,便于脚本直接读取。表与内联表都会展开。

已转换
TOML
18 行
JSON
26 行

关于 TOML 转 JSON

把 TOML 转成 JSON 通常是为了让只认 JSON 的消费方读到同一份配置,例如把本地工具链的配置文件喂给前端构建、或把配置注入到以 JSON 为契约的服务。相比手工誊写,转换能保证结构完整,也避免了在嵌套表上的低级错误。 转换原理是把 TOML 解析成对象树,再按 JSON 规则序列化。TOML 的段头语法让层级表达更显式,因此转换后的 JSON 层级往往一目了然;但两种格式在类型上的差异需要留意:TOML 的日期时间是独立类型,JSON 里只可能是字符串,序列化实现决定它带不带偏移量与毫秒,下游按字符串解析时必须先确认形态。 使用要点:转换后先核对键的总数与每个分支的键数,确认没有结构丢失;再检查数组——TOML 中数组可以混合类型,而多数语言的 JSON 消费方假定数组元素同类型,混合数组会带来反序列化问题。规范上 TOML 允许数组元素类型不一致,这种数据在跨语言传递时最容易出错,遇到时应先决定要不要拆成多个字段。 边界与限制:注释必然丢失,需要说明的配置应另存文档。TOML 支持用点号表达层级,转换后仍然是嵌套对象,但若源文件里既有字面含点号的键又有段头表达的层级,解析结果可能不是你直觉预期的那一种,这种歧义应在源文件层面消除而不是在转换后补救。此外数字方面,TOML 支持十六进制与下划线分隔等写法,转换后统一变成十进制数字,若下游依赖原表示形式会受影响。 数据与隐私:这类配置文件通常含凭据与内部地址。本工具在浏览器内完成转换,不上传内容;把配置转成 JSON 再注入服务时,注意不要连同调试开关与内部端点一起发布出去。

工程上建议把转换做成一条可重复执行的流水线步骤,而不是人工偶发操作:源文件改动后自动重生成,并在流水线里比对产物与提交内容是否一致。这样既保证了产物的可追溯性,也能立刻发现「有人直接改了生成结果」这种情况。若配置本身较大,还可以在转换后追加一次结构校验,例如用模式文件验证必需字段与类型,把错误挡在构建阶段而不是等到服务启动时才暴露。

上手建议先用一份小配置验证输出结构,确认数组与日期字段的形态符合下游预期,再处理完整文件。维护上,把「源文件改动后必须重新生成」写进提交流程并加一条自动化校验:若提交的产物与重新生成的结果不一致就拒绝合并。这条规则成本很低,却能杜绝「有人只改了产物没改源文件」这种最难排查的漂移,尤其是在多位成员共同维护同一份配置的项目里。 在合并请求里附上重新生成的产物,评审者可以直接看到配置变更的真实影响,而不必自行还原。 把这条规则写进提交检查脚本,漂移就无从发生。

实现原理

转换把 TOML 解析成对象树再序列化为 JSON。TOML 的段头让层级显式,因此转换结果通常一目了然;但类型上需要留意:日期时间是 TOML 的一等类型,在 JSON 里只能是字符串,序列化实现决定它带不带偏移量与毫秒。数字方面 TOML 允许十六进制与下划线分隔,转换后统一成十进制。

类型差异
输入created = 2026-10-01T00:00:00Z
输出{"created":"2026-10-01T00:00:00Z"}(在 JSON 里只能是字符串)

使用方法

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

使用场景

  • 读取项目元数据 — 把 pyproject.toml / Cargo.toml 转 JSON,用脚本提取版本号、依赖等字段。
  • 配置接入 API — 将 TOML 配置转 JSON 后通过 REST 接口提交给只接受 JSON 的服务。
  • 前端展示配置 — 浏览器无法原生解析 TOML,转成 JSON 后前端即可直接渲染。
  • 类型核对 — 查看 TOML 的日期、整数、浮点在 JSON 中映射成什么类型,排查类型问题。
  • 配置 diff — 把两份 TOML 都转成 JSON,再用「JSON 对比」工具查看差异。
  • 校验配置结构 — 把 TOML 转 JSON 后喂给 JSON Schema 校验器,用于配置结构校验。

常见问题

TOML 的日期会转成什么?

TOML 原生日期时间会转为 ISO 8601 格式的 JSON 字符串,因为 JSON 没有专门的日期类型。

表数组 [[x]] 怎么映射?

会映射成 JSON 中的对象数组,即 "x": [ {.}, {.} ],符合直觉。

支持 TOML 1.0 的全部特性吗?

支持主流特性,包括内联表、表数组、多行字符串、各类标量。极少用的边角语法可能需要手动调整。

为什么提示重复键错误?

TOML 规范禁止在同一个表里重复定义键。错误提示会指出冲突位置,删除重复定义即可。

内联表会保留吗?

内联表 { a = 1 } 会被展开成普通 JSON 对象 {"a":1},写法形式不同但语义一致。

能转成 YAML 吗?

可以,请使用本站的「TOML 转 YAML」工具。

[[段落]] 转出来变成什么?

对象数组段会转成 JSON 数组,数组内每个元素是一个对象,与 TOML 语义一一对应。若同名段交替出现,JSON 里会被合并到同一个数组,顺序按出现顺序保留。

日期和时间原样输出成字符串了吗?

TOML 有原生日期类型(1979-05-27T07:32:00Z),转 JSON 时按 RFC 3339 字符串输出,因为标准 JSON 没有日期类型。需要 Date 对象时在消费端解析,不要在转换层强行转,否则会引入时区歧义。

广告