Skip to content

参考:TOML 语法速查

基于 TOML 1.0.0 · 核于 2026-07

速查

  • 定位:Tom's Obvious Minimal Language,面向人类的配置格式;无歧义映射哈希表;1.0.0(2021-01)为事实标准。
  • 顶层要素:键值对 键 = 值、注释 #、表 [t]、表数组 [[t]]
  • :裸键 A-Za-z0-9_- / 引号键 "..." '...' / 点分键 a.b.c
  • 字符串四型"基本"(转义)/"""多行基本"""(首换行删、行尾 \ 续行)/'字面'(不转义)/'''多行字面'''
  • 数字:整数 64 位有符号(0x/0o/0b、下划线、禁前导零);浮点 IEEE 754(inf/nan 小写、小数点两侧须有数字)。
  • 布尔true/false(小写)。
  • 日期时间:带偏移 / 本地日期时间 / 本地日期 / 本地时间(RFC 3339)。
  • 复合:数组 [ ](可混合类型、可尾随逗号)/内联表 { }(自包含、禁尾随逗号、单行)/表数组 [[t]](追加元素)。
  • 不可:重复定义键/表、点分键后重定义该表、键值与表类型冲突、静态数组被 [[ ]] 追加。
  • 官方toml.iov1.0.0 规范toml-lang/toml

一、类型速查表

类型写法示例要点
基本字符串"hello\n"双引号,支持 \n \t \" \\ \uXXXX \UXXXXXXXX
多行基本字符串"""..."""跨行;首换行删除;行尾 \ 续行不留换行
字面字符串'C:\path'单引号,不转义,单行
多行字面字符串'''...'''不转义、跨行;内部最多连续 2 个单引号
整数42 -17 1_000 0xFF 0o755 0b10164 位有符号;禁前导零;进制形式禁 +/-
浮点3.14 5e+22 inf nanIEEE 754;小数点两侧须有数字;特殊值小写
布尔true false只小写
带偏移日期时间1979-05-27T07:32:00ZRFC 3339,绝对时刻
本地日期时间1979-05-27T07:32:00无时区
本地日期1979-05-27仅日期
本地时间07:32:00仅时间
数组[1, "a", true]有序、可混合类型、可尾随逗号
内联表{ x = 1, y = 2 }单行、自包含、禁尾随逗号
[server]声明一张表
表数组[[products]]每次追加一个表元素

二、键的三形态

形态示例允许字符
裸键bare_key 1234ASCII 字母/数字/_/-
引号键"127.0.0.1" 'key'任意(走字符串规则)
点分键a.b.c = 1各段按键规则,点号分层

三、合法 / 非法对照

场景合法非法
浮点小数点0.5 5.0.5 5. 3.e+20
整数前导零0 0o1230123 007
特殊浮点inf nanInf NaN Infinity
布尔true falseTrue yes on 1
数组尾随逗号[1, 2,]—(数组允许)
内联表尾随逗号{ a = 1 }{ a = 1, }
键重复各定义一次a = 1 两次 / x"x" 同名
点分键后表头追加新子表 [a.b.c]重定义 [a.b]
静态数组 vs 表数组一开始就 [[x]]x = [][[x]]

四、生态落地一览

项目 / 工具文件用途
Rust CargoCargo.toml包清单:[package]/[dependencies]/[[bin]]
Python 打包pyproject.toml[build-system](PEP 518) + [project](PEP 621)
Ruff / Black / mypypyproject.toml[tool.*] 命名空间下的工具配置
Cloudflare Wranglerwrangler.tomlWorkers 部署配置
Netlifynetlify.toml[build]/[[redirects]]/[[headers]]
Hugohugo.toml站点配置(旧名 config.toml
Taplo / Tombi格式化 + LSP
Python 3.11+内置只读解析库 tomllib

五、TOML vs YAML vs JSON

维度TOMLYAMLJSON
定位手写配置手写配置 / 复杂数据机器数据交换
注释##
层级显式 [表头]/点分键缩进(敏感){ } 嵌套
原生日期✅ 四型
隐式类型转换✅(挪威问题)
锚点/引用
典型Cargo.tomlk8s / CIREST API

选型速记:人手编辑 + 注释 + 日期 + 层级不深 → TOML;机器交换 / 对接 Web API → JSON;深层嵌套 + 锚点复用 → YAML

六、术语

  • 哈希表(hash table):键到值的映射结构,即字典/对象;TOML 的解析目标就是它。
  • 表(table)[t] 声明的键值集合,映射到一层字典。
  • 超级表(super-table):点分键或子表头隐式创建的中间层表。
  • 表数组(array of tables)[[t]],一组同名表构成的数组。
  • 内联表(inline table){ } 写在一行内的自包含表。
  • 点分键(dotted key)a.b.c,用点号表达嵌套层级的键。
  • 带偏移 / 本地日期时间:有无 Z/±hh:mm 时区偏移之分,前者是绝对时刻。

七、权威链接