正在加载,请稍候…

TOML 转 JSON:什么是 TOML 以及何时使用它?

将 TOML 转换为 JSON。了解 TOML 配置格式、其相对于 YAML 的优势以及常见用例。

TOML 转 JSON:什么是 TOML 以及何时使用它?

什么是 TOML?

TOML(Tom's Obvious, Minimal Language)是一种配置文件格式,旨在易于读写,且语义明确。它由 Tom Preston-Werner(GitHub 联合创始人)创建,作为 INI 文件的替代方案,支持更丰富的数据类型。

TOML 广泛应用于:

  • Rust 项目(Cargo.toml)
  • Python 项目(pyproject.toml)
  • Hugo 静态站点生成器
  • Gitea/Forgejo 配置
  • 许多其他开发者工具

TOML 转 JSON:什么是 TOML 以及何时使用它?插图

TOML 语法

TOML 使用清晰、基于节的结构:

# This is a TOML configuration file

[package]
name = "my-project"
version = "1.0.0"
edition = "2021"

[dependencies]
serde = { version = "1.0", features = ["derive"] }
tokio = "1.0"

[server]
host = "0.0.0.0"
port = 8080
workers = 4

[[environments]]
name = "development"
debug = true

[[environments]]
name = "production"
debug = false

TOML 数据类型

TOML 具有显式、强类型的值:

类型 示例
字符串 "hello"'literal'
整数 420xFF1_000_000
浮点数 3.146.022e23
布尔值 true / false
日期时间 1979-05-27T07:32:00Z
本地日期 1979-05-27
本地时间 07:32:00
数组 [1, 2, 3]
内联表 {name = "Alice", age = 30}

TOML 的显式类型避免了 YAML 中有时出现的歧义(例如 true"true" 可能混淆)。

TOML 转 JSON:什么是 TOML 以及何时使用它?插图

等效的 JSON

将上面的 TOML 示例转换:

{
  "package": {
    "name": "my-project",
    "version": "1.0.0",
    "edition": "2021"
  },
  "dependencies": {
    "serde": {
      "version": "1.0",
      "features": ["derive"]
    },
    "tokio": "1.0"
  },
  "server": {
    "host": "0.0.0.0",
    "port": 8080,
    "workers": 4
  },
  "environments": [
    {"name": "development", "debug": true},
    {"name": "production", "debug": false}
  ]
}

注意:TOML 的 [[environments]](表数组)变成了 JSON 数组。

TOML vs. JSON vs. YAML

特性 TOML JSON YAML
注释 支持 不支持 支持
强类型 部分
多行字符串 支持 不支持(使用 \n) 支持
人类可读性
日期/时间支持 原生 仅字符串 部分
表数组 优雅 冗长 冗长
锚点/别名 不支持 不支持 支持
规范复杂度

TOML 转 JSON:什么是 TOML 以及何时使用它?插图

何时使用 TOML vs. JSON

使用 TOML 当:

  • 编写需要人工编辑的配置文件
  • 在 Rust/Python 生态系统中工作
  • 需要日期/时间类型支持
  • 注释对文档很重要

使用 JSON 当:

  • 与 Web API 通信
  • 以编程方式生成配置
  • 需要最大的解析器兼容性
  • 在 JavaScript/Node.js 环境中工作

使用 TOML 转 JSON 转换器

我们的转换器:

  1. 粘贴 TOML 配置 到输入框
  2. 即时获取 JSON 输出,格式正确
  3. 处理所有 TOML 类型,包括日期、时间和表数组
  4. 语法验证,带有有用的错误消息
  5. 复制或下载 生成的 JSON

适用于将 TOML 配置的工具与基于 JSON 的 API 集成、调试配置以及通过查看等效的 JSON 表示来理解 TOML 结构。