语法
基本规则
| key = value | 键值对(每行一个) |
| # | 注释(到行尾) |
| Case sensitive | 键和值区分大小写 |
| UTF-8 | 文件必须是合法的 UTF-8 |
| No null | TOML 没有 null 类型 |
最小示例
title = "My App"
debug = true
port = 8080
字符串
字符串类型
| "basic" | 基本字符串(支持转义) |
| 'literal' | 字面字符串(不转义) |
| """multi""" | 多行基本字符串 |
| '''multi''' | 多行字面字符串 |
示例
basic = "Hello\nWorld"
literal = 'C:\Users\path'
multi = """
Line one
Line two"""
转义序列
| \n \t \r | 换行、制表符、回车 |
| \\ | 反斜杠 |
| \uXXXX | Unicode(4 位十六进制) |
| \UXXXXXXXX | Unicode(8 位十六进制) |
数字与布尔值
数字类型
| 42 | 整数 |
| 1_000_000 | 带下划线的整数 |
| 0xff / 0o77 / 0b11 | 十六进制、八进制、二进制 |
| 3.14 | 浮点数 |
| 5e+22 / 1e-2 | 科学计数法 |
| inf / nan | 特殊浮点值 |
| true / false | 布尔值(必须小写) |
示例
count = 42
price = 19.99
hex_color = 0xFF5733
enabled = true
日期
日期与时间类型
| 2026-03-26T10:30:00Z | 带时区的日期时间(UTC) |
| 2026-03-26T10:30:00-05:00 | 带时区的日期时间(EST) |
| 2026-03-26T10:30:00 | 本地日期时间(无时区) |
| 2026-03-26 | 本地日期 |
| 10:30:00 | 本地时间 |
示例
created = 2026-03-26T10:30:00Z
birthday = 1990-05-15
alarm = 07:00:00
表
表语法
[server]
host = "localhost"
port = 8080
[server.ssl]
enabled = true
cert = "/path/to/cert.pem"
表数组
[[users]]
name = "Alice"
role = "admin"
[[users]]
name = "Bob"
role = "user"
规则
| [name] | 标准表头 |
| [a.b.c] | 点号键 — 嵌套表 |
| [[name]] | 表数组 |
| No redefine | 不能重复定义同一个表 |
数组
数组语法
colors = ["red", "green", "blue"]
numbers = [1, 2, 3]
多行数组
hosts = [
"alpha.example.com",
"beta.example.com",
]
TOML 数组允许末尾逗号
规则
| Same type | 所有元素必须同类型 |
| Trailing comma | 最后一个元素后可以有逗号 |
| Newlines | 数组可以跨多行 |
内联表
内联表语法
point = { x = 1, y = 2 }
user = { name = "Alice", admin = true }
规则
| Single line | 必须写在一行内 |
| No trailing comma | 不允许末尾逗号 |
| No newlines | 不能跨多行 |
| No adding keys | 不能在后续再添加键 |
内联 vs 标准
# Inline — compact, one-liners
db = { host = "localhost", port = 5432 }
# Standard — readable, extendable
[db]
host = "localhost"
port = 5432
常用模式
pyproject.toml
[project]
name = "myapp"
version = "1.0.0"
dependencies = ["flask>=3.0"]
Cargo.toml
[package]
name = "myapp"
version = "0.1.0"
edition = "2021"
技巧
| taplo | TOML 工具集 — 格式化与 lint |
| No null | 省略该键,而不是设置为 null |
| No anchors | 与 YAML 不同,没有引用/别名系统 |
| Strict | 不允许重复键,不允许混合类型数组 |