TOML 转 JSON 转换器
将 TOML 粘贴到左侧,得到 JSON。表变成对象,表数组变成数组。在浏览器中运行 — 无需上传。
- 将 TOML 粘贴到左侧文本区。
- 点击「转换为 JSON」。输出是保留表嵌套结构的 JSON 对象。
- 复制结果或下载为 data.json。
- 日期时间会被转为 ISO 8601 字符串;数字中的下划线会被去除。
它能做什么?
将 TOML 1.0 文档解析为 JSON 对象。`[section]` 表变成嵌套对象;`[[items]]` 表数组变成 JSON 数组。字符串、整数(包括 16/8/2 进制字面量与位分隔下划线)、浮点、布尔、日期、日期时间和时间都映射到 JSON 等价表示。内联表与内联数组的处理方式相同。
示例
TOML 输入:
name = "Ada"
active = true
[address]
city = "London" JSON 输出:
{
"name": "Ada",
"active": true,
"address": {
"city": "London"
}
} 常见 TOML 错误及修复
TOML 在某些规则上比 YAML 或 JSON 更严格。下列模式覆盖了大多数解析失败。
- 未加引号的字符串。 `name = Ada` 无效 — 裸值会被理解为键/布尔/数字,而不是字符串。请用双引号: `name = "Ada"`。
- 混合类型数组(TOML 0.x)。 TOML 0.5 禁止数组中混合类型;TOML 1.0 允许。@iarna/toml 遵循 1.0,所以 `[1, "two"]` 在这里有效。如果 TOML 必须经过 0.5 工具往返,请保持数组类型一致。
- 重复定义表。 把 `[a]` 定义两次会出错。同一个表头最多只能出现一次。请把键合并到单个 `[a]` 块。
- 缺少时区的日期时间。 `d = 2026-04-26T12:00:00`(没有 Z 或偏移)是「本地日期时间」 — 能解析,但 JSON 没有地域概念。输出是同一字符串(墙上时钟时间),不是 UTC 时刻。要 UTC 请加 `Z`: `d = 2026-04-26T12:00:00Z`。
- 三重引号转义混淆。 TOML 基本多行字符串使用 `"""..."""` 并处理转义;字面多行字符串使用 `\'\'\'...\'\'\'` 不处理。混用转义规则是最常见的多行字符串错误。
- 扩展内联表。 内联表 `point = {x=1, y=2}` 是封闭、自包含的 — 之后不能再写 `[point.z]` 或 `point.z = 3`。如需扩展,请改用标准 `[point]` 块语法。
常见问题
日期时间在 JSON 里如何表示?
JSON 没有原生日期时间类型,所以会变为 ISO 8601 字符串。带偏移的(`2026-04-26T12:00:00Z`)与本地的(`2026-04-26T12:00:00`)都按字面字符串化 — 但只有带偏移的形式在 JSON 中无歧义。
整数中的下划线会保留吗?
不会 — TOML 用 `1_000_000` 提升可读性,解析器会去掉下划线,JSON 值是 `1000000`。位分隔仅是 TOML 源文本特性。
TOML 注释会怎样?
会被丢弃。TOML 注释以 `#` 开头,但 JSON 没有注释语法,解析器会丢弃它们。如需保留,请使用其他中间格式。
支持表数组吗?
支持。重复出现的 `[[products]]` 会变为 `products` 键下的 JSON 数组。每个 `[[products]]` 头开启新条目,其后的键值对填充该条目。
能转换非常大的 TOML 文件吗?
约 30 MB 后文本框会变慢。极大的 TOML 文件很少见 — 多数配置文件远小于 1 MB。
我的 TOML 会被上传吗?
不会。一切都在你的浏览器里运行 — 数据由本页 JavaScript 解析,从不发送到任何服务器。