什么是 TOML?

TOML 是一种人类可读的配置文件格式,语法简洁明了,可直接映射到哈希表数据结构。支持字符串、数字、布尔值、日期时间、数组和表等数据类型,广泛用于 Rust(Cargo.toml)和 Python(pyproject.toml)等项目配置。

快速了解

全称Tom 的显而易见的最小化语言
创建时间2013 年,由 Tom Preston-Werner 创建
规范文档官方规范

工作原理

TOML 由 Tom Preston-Werner(GitHub 联合创始人)于 2013 年创建,作为一种优先考虑人类可读性和简洁性的配置格式。与可能复杂且因显著空白而容易出错的 YAML 不同,TOML 使用带有清晰分隔符的显式语法。它直接映射到哈希表,非常适合配置文件。TOML 支持字符串、整数、浮点数、布尔值、日期时间、数组和表(节)。注释以 # 开头。该格式在 Rust 生态系统(Cargo.toml)、Python 打包(pyproject.toml)和各种其他工具中获得广泛使用。TOML 在 JSON 的严格性和 YAML 的灵活性之间取得平衡,避免了 YAML 的陷阱,如「挪威问题」(NO 被解释为 false)。其显式的日期时间支持和清晰的表语法使其特别适合应用程序配置。

主要特点

  • 人类可读,语法显而易见且最小化
  • 直接映射到哈希表/字典
  • 显式支持日期时间(ISO 8601 格式)
  • 支持表(节)和嵌套表
  • 使用 # 注释(不像 JSON)
  • 无显著空白问题(不像 YAML)

常见用途

  1. Rust 项目配置(Cargo.toml)
  2. Python 打包(pyproject.toml)
  3. 应用程序配置文件
  4. 静态网站生成器(Hugo、Zola)
  5. 开发工具配置

示例

loading...
Loading code...

常见问题

TOML 和 YAML 有什么区别?各自适合什么场景?

TOML 使用显式语法,无显著空白问题,更不容易出错;YAML 依赖缩进,语法更灵活但容易因空白导致错误。TOML 适合简单到中等复杂度的配置文件,如 Cargo.toml、pyproject.toml;YAML 适合需要复杂嵌套结构的场景,如 Kubernetes 配置、CI/CD 流水线。TOML 更安全,YAML 更灵活。

TOML 中的表(Table)和数组表(Array of Tables)如何使用?

表用 [table_name] 定义,表示一个键值对集合,类似于字典。数组表用 [[array_name]] 定义,每次出现创建数组中的一个新元素。例如,[[servers]] 可以定义多个服务器配置。嵌套表用点号分隔,如 [servers.alpha]。这种结构清晰地映射到编程语言中的数据结构。

为什么 Rust 和 Python 生态系统广泛采用 TOML?

Rust 的 Cargo 和 Python 的 pyproject.toml 选择 TOML 因为:语法简单直观、不易出错、原生支持日期时间类型、直接映射到哈希表便于解析、支持注释便于文档化配置。Tom Preston-Werner(GitHub 创始人)创建 TOML 时就考虑了配置文件的实际需求,使其成为项目配置的理想选择。

TOML 支持哪些数据类型?

TOML 支持的数据类型包括:字符串(基本字符串和多行字符串)、整数、浮点数、布尔值、日期时间(本地日期、本地时间、带时区的日期时间)、数组(同类型元素)和表(键值对集合)。特别值得注意的是,TOML 原生支持 ISO 8601 格式的日期时间,这是 JSON 所不具备的。

如何从 JSON 或 YAML 迁移到 TOML?

迁移步骤:1)分析现有配置结构,确定是否适合 TOML(过于复杂的嵌套可能不适合);2)将对象转换为 TOML 表,数组转换为 TOML 数组或数组表;3)利用 TOML 的注释功能添加文档;4)使用在线转换工具辅助转换;5)验证转换后的文件语法正确。注意 TOML 不支持 null 值,需要特殊处理。

相关工具

相关术语

相关文章

JSON vs XML终极对决【2026】- 数据格式选择全攻略

深入对比现代 Web 开发中两大主流数据交换格式:轻量级的 JSON 与结构严谨的 XML 的优劣差异。本高级指南从底层语法结构、反序列化解析性能、人类可读性、生态系统支持等维度进行全方位深度剖析。教您如何在现代 RESTful API 接口设计、微服务架构通信、复杂企业级 SOAP 应用对接等实际工程场景中制定最合理的数据格式选择与技术迁移重构策略!

2024-01-25

YAML与JSON互转详解【2026】- 配置文件格式与转换原理

全面系统地掌握 YAML 与 JSON 两种主流数据格式的深层语法结构差异和双向互转原理,深入了解 YAML 作为 JSON 严格超集的高级特性(如锚点引用、多行字符串)。学习现代 DevOps 复杂配置文件管理的业界最佳实践,彻底掌握在 Kubernetes 集群、Docker Compose、CI/CD 流水线等高级工程场景下的格式选择规范与高效转换技巧。

2026-01-12

JSON在线对比指南:高效比较JSON文件的完整教程【2026】

全面系统地学习如何高效、准确地在线对比深层复杂嵌套的 JSON 数据文件。深入硬核掌握 JSON diff 差异比较的底层技术原理与算法(如 LCS、基于键匹配),学会使用业界最佳的在线 JSON 差异比较与可视化工具进行 Git 版本控制冲突解决和后端 REST API 联调调试。本高级指南详细解析了多种常见的差异对比应用场景、智能高亮冲突差异点,并为您提供实用的 Python 与 JavaScript 多语言代码实战示例以实现自动化的数据结构比对。

2026-02-07