TOML 格式化与验证器
粘贴 TOML,点击格式化得到 TOML 1.0 规范布局,或验证检查语法。无需上传。
- 将 TOML 粘贴到左侧文本区。
- 点击「格式化」让其经过 @iarna/toml 并产出规范布局。
- 点击「验证」只检查语法,不修改输入。
- 错误会指出问题所在的行和列。
它能做什么?
使用 @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 要求同一作用域内的顶层键(原始值)必须出现在任何表头之前。格式化器会把原始值排在子表之前以满足该规则。如果原输入顺序不同,格式化阶段会规范化它。