TOML 格式化与验证器

粘贴 TOML,点击格式化得到 TOML 1.0 规范布局,或验证检查语法。无需上传。

  1. 将 TOML 粘贴到左侧文本区。
  2. 点击「格式化」让其经过 @iarna/toml 并产出规范布局。
  3. 点击「验证」只检查语法,不修改输入。
  4. 错误会指出问题所在的行和列。
它能做什么?

使用 @iarna/toml 的 TOML 1.0 模式解析,然后以规范布局重新输出 — 一般键先于子表、引号一致、整数下划线被剥离。「验证」按钮不修改输入,仅按规范检查语法。注释会在往返过程中丢失(TOML 格式化器普遍无法在解析-再输出过程中保留注释)。

示例

杂乱的 TOML 输入:

[server]
host="localhost"
port=8080

name="myapp"

格式化输出:

name = "myapp"

[server]
host = "localhost"
port = 8080

常见 TOML 错误及修复

TOML 1.0 的规则比 YAML 或 JSON 更严格。下列模式覆盖了大多数解析失败。

  • 未加引号的字符串。 `name = Ada` 无效。请用双引号: `name = "Ada"`。
  • 重复定义表。 把 `[a]` 定义两次会出错。同一个表头最多只能出现一次。请把键合并到单个 `[a]` 块。
  • 表头之后的顶层键。 一旦你写了 `[section]`,后续所有键都属于该节。一般键必须先于其首个表头。格式化器会为你重排,但原始输入本身仍需有效。
  • 缺少时区的日期时间。 `d = 2026-04-26T12:00:00`(没有 Z 或偏移)是「本地日期时间」。能解析,但 JSON 风格的消费者可能无法表达地域。需要 UTC 请用 `2026-04-26T12:00:00Z`。
  • 扩展内联表。 内联表 `point = {x=1, y=2}` 是封闭、自包含的,之后不能再写 `point.z = 3`。要扩展请改用标准 `[point]` 块语法。
  • 三重引号转义混淆。 `"""..."""`(基本多行)处理转义;`\'\'\'...\'\'\'`(字面多行)不处理。混用是最常见的多行字符串错误。
常见问题

格式化会改动我的数据吗?

只改动布局 — 按 TOML 规则把原始值排在子表之前、规范化空白、剥离整数下划线(TOML 语义)。值本身不变。

TOML 注释会被保留吗?

不会。@iarna/toml 在解析-再输出过程中会丢弃注释。需要保留注释的格式化,需要选择保留源位置信息的其他库。

会按 TOML 1.0 校验吗?

会。@iarna/toml 遵循 TOML 1.0 — 包括允许混合类型数组、点号键和修订过的字符串规则。依赖 TOML 0.5 专用行为(要求同质数组)的输入在这里仍能解析,但在更严格的 0.5 解析器上可能失败。

可以处理多大的 TOML 文件?

约 30 MB 后文本框会变慢。多数配置文件远小于 1 MB。

我的 TOML 会被上传吗?

不会。一切都在你的浏览器里运行 — 输入由本页 JavaScript 解析与重新序列化,从不发送到任何服务器。

为什么格式化器会重排我的键?

TOML 1.0 要求同一作用域内的顶层键(原始值)必须出现在任何表头之前。格式化器会把原始值排在子表之前以满足该规则。如果原输入顺序不同,格式化阶段会规范化它。