TOML (Tom’s Obvious, Minimal Language) 是一种极简、语义化的配置文件格式。它的设计目标是易于阅读,并且可以无二义性地转换为一个哈希表(Hash Table),这使得它在各种编程语言中都非常容易解析和使用。
核心特性
- 极简主义: 语法非常简洁明了,主要由键值对、表格(Section)和注释构成。
- 易于阅读: 设计上注重人类的可读性。
- 到哈希表的映射: 它的结构可以自然地映射到程序语言中的字典(Dictionary)、哈希表(Hash Map)或对象(Object)等数据结构。
- 文件扩展名: 通常使用
.toml。
基础语法要素
| 语法元素 |
示例 |
描述 |
| 键值对 |
key = "value" |
定义配置项,键和值之间用等号连接。 |
| 表格(Section) |
[server] |
定义一个顶层(或一级)表格,用于组织配置。 |
| 内嵌表格 |
[database.primary] |
使用点号 . 来创建嵌套的表格结构。 |
| 数组 |
data = [1, 2, 3] |
支持数组类型,可以包含不同类型的数据。 |
| 表格数组 |
[[products]] |
使用双层方括号 [[...]] 来创建表格数组(一组相同的表格)。 |
| 注释 |
# 这是一个注释 |
从 # 符号开始直到行尾的内容都是注释。 |
支持的数据类型
TOML 支持常见的数据类型,包括:
- 字符串 (
String)
- 整数 (
Integer)
- 浮点数 (
Float)
- 布尔值 (
Boolean)
- 日期和时间 (
Datetime)
- 数组 (
Array)
- 表格 (
Table)
示例
# This is a TOML document
title = "TOML Example"
[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00
[database]
enabled = true
ports = [ 8000, 8001, 8002 ]
data = [ ["delta", "phi"], [3.14] ]
temp_targets = { cpu = 79.5, case = 72.0 }
[servers]
[servers.alpha]
ip = "10.0.0.1"
role = "frontend"
[servers.beta]
ip = "10.0.0.2"
role = "backend"