TOML 格式化器和验证器
指导
TOML 格式化器和验证器
TOML(Tom's Obvious Minimal Language)已成为 Rust 项目(Cargo.toml)、Python 打包(pyproject.toml)以及许多其他工具的首选配置文件格式。它被设计为人类可读,但手动编辑的配置文件不可避免地会发生偏差——不一致的间距、混乱的键顺序以及仅在构建时才会暴露的细微语法错误。
此工具会在客户端解析您的 TOML,根据规范进行验证,并以干净、一致的格式重新输出。它还可以将 TOML 转换为 JSON,以便快速进行互操作性检查。没有任何内容会离开您的浏览器。
如何使用
将您的 TOML 内容粘贴到输入区域,或尝试其中一个内置示例(Cargo.toml、pyproject.toml)。选择您的缩进偏好,如果需要,可以切换字母顺序排序,即会立即显示格式化后的输出。使用 JSON 选项卡将解析后的结构显示为 JSON。一键复制或下载结果。
特征
- 语法验证 – 在错误破坏您的构建之前,捕获带有行号和描述性消息的错误
- Consistent Formatting – 规范化缩进、等号周围的间距以及表之间的空行
- 键排序 – 可选地按字母顺序对每个表中的键进行排序,以获得可预测的顺序
- 可配置缩进 – 选择 2 或 4 个空格以匹配您的项目约定
- TOML 到 JSON 转换 – 将您的配置显示为 JSON,以便快速调试或 API 集成
- 内置示例 – 加载示例 Cargo.toml 或 pyproject.toml 配置以即时测试格式设置
- 客户端处理 – 您的配置文件保留在您的浏览器中——没有任何内容会被发送到服务器
何时使用此工具
在提交配置更改、合并来自多个贡献者的配置或在 TOML 版本之间迁移时,请先通过格式化器运行您的 TOML。当您需要将基于 TOML 的配置馈送到仅限 JSON 的工具或 API 时,JSON 转换尤其有用。
常问问题
-
什么是 TOML,它与 YAML 和 JSON 有何不同?
TOML (Tom's Obvious Minimal Language) 是一种易于读写的设计的配置文件格式。与 YAML 不同,TOML 避免了会导致细微错误的显著的空白和复杂的嵌套。与 JSON 不同,TOML 支持注释,具有本机日期/时间类型,并且对于配置文件来说更具人性化。TOML 以牺牲 YAML 的一些灵活性为代价来换取可预测性——通常只有一种方法可以用 TOML 来表达某事。
-
什么是 TOML 表,内联表有何不同?
TOML 表是在 [package] 或 [dependencies] 等标题下的一组键值对。可以使用点分标题(如 [server.database])来嵌套表。内联表是使用花括号的紧凑单行语法:key = { name = 'value', version = '1.0' }。常规表更适合具有许多键的可读性,而内联表适用于小型、紧密相关的值的组。
-
为什么 Rust 项目使用 Cargo.toml 而不是 JSON 或 YAML?
Rust 选择 TOML 作为 Cargo 的格式,因为它在人类可读性和机器可解析性之间取得了平衡。TOML 的显式类型(字符串、整数、布尔值、日期)减少了 YAML 中普遍存在的歧义(其中“no”可能被解释为布尔值)。其注释支持对于记录依赖项选择至关重要。该格式的简单性还意味着更少的解析边缘情况,以及在不同工具和编辑器之间更可预测的行为。
-
什么是 TOML 中的表数组?
表数组使用双括号 [[table_name]] 来定义同一表类型的多个实例。例如,Cargo.toml 中的 [[bin]] 定义了多个二进制目标。每个 [[bin]] 块都会向数组添加一个新元素。这是 TOML 表示对象数组的方式,避免了 JSON 数组的视觉混乱或 YAML 的基于破折号的列表。
-
pyproject.toml 在 Python 打包中如何工作?
pyproject.toml 是 Python 标准化的项目配置文件(在 PEP 518 和 PEP 621 中定义)。它取代了旧的 setup.py 和 setup.cfg 方法。[build-system] 表指定了构建要求,[project] 包含名称、版本和依赖项等元数据,而 [tool.*] 表则包含 pytest、black 或 mypy 等特定工具的配置。这会将多个配置文件合并到一个标准位置。
