JSON 叒又被抛弃了!顶流开源项目钟爱TOML?

大家好,我是爱逛开源项目的小K。

最近逛 GitHub 上的热门项目,不管是 Rust 的 Cargo.toml,还是 Python 的 pyproject.toml

甚至是很多 AI 智能体的配置,你都会看到一个身影:TOML

640-20

“奇怪了?为什么程序员们放着好好的 JSON 和 YAML 不用,非要搞这个新面孔?

说白了:因为人类的耐心是有限的,而配置文件的“”是无限的。

什么是 TOML?

TOML 的全称是 Tom’s Obvious Minimal Language

Tom 的浅显的、极简的语言

看名字就知道了,它的作者 Tom Preston-Werner(也是 GitHub 的创始人之一)主打一个:显而易见、极简

640-21

它的设计目标就是:让一个不怎么懂代码的人,也能一眼看懂配置写了啥,而且还能徒手修改不出错。

640-22

“看起来有点像pip.ini640-23

为什么 JSON 和 YAML “失宠”了?

在 TOML 流行之前,我们主要用这两位:

JSON

对机器很友好,对人很刻薄。

满屏的大括号、双引号,还有那该死的“最后一行不能加逗号”。

只要漏写一个标点,整个程序就罢工。

{
  "global": {
    "cache-dir": "D:\\Programs\\Python\\Python36\\pipcache",
    "timeout": 6000,
    "index-url": "http://mirrors.aliyun.com/pypi/simple/"
  },
  "install": {
    "trusted-host": "mirrors.aliyun.com"
  }
}

YAML

对人很友好,对空格很变态。

YAML 确实好看,但它对缩进的强迫症简直是程序员的噩梦。

稍微多敲一个空格,你的配置逻辑就全乱了,这种错误极难排查。

global:
  cache-dir: D:\Programs\Python\Python36\pipcache
  timeout: 6000
  index-url: http://mirrors.aliyun.com/pypi/simple/
install:
  trusted-host: mirrors.aliyun.com

TOML

走的是第三条路: 既有 JSON 的逻辑清晰,又有类似 Windows 时代 .ini 文件的亲切感。

[global]
cache-dir = "D:\\Programs\\Python\\Python36\\pipcache"
timeout = 6000
index-url = "http://mirrors.aliyun.com/pypi/simple/"

[install]
trusted-host = "mirrors.aliyun.com"

不知道各种观众老爷喜欢哪种风格?

怎么在Python中读TOML?

从 Python 3.11 版本开始,tomllib 模块被加入到标准库中,无需安装额外套件即可使用。

import tomllib

def read_toml_config(filepath="config.toml"):
    with open(filepath, "rb") as f:
        # 使用 tomllib.load() 将文件内容解析为字典
        data = tomllib.load(f)
    return data

# 示例:读取并访问数据
config_data = read_toml_config("pyproject.toml")  # 假设你的 TOML 文件名为 pyproject.toml
print(f"全局缓存目录: {config_data['global']['cache-dir']}")
print(f"超时设置: {config_data['global']['timeout']}")

为什么开源大厂都在跟进?

Python 社区

现在的 pyproject.toml 已经统一了江湖,把原来的 setup.pyrequirements.txt 全都集成在了一个文件里。

Rust 社区

作为“最严谨”的语言,Rust 从第一天起就选了 TOML 作为包管理格式。

DevOps 领域

容器化工具、CI/CD 流水线配置,越来越多地转向 TOML,就是为了降低人为修改配置导致的线上事故。

该不该换?

如果你的项目配置只有三五行,JSON 挺好;

如果你的配置需要复杂的层级且不需要人改,YAML 也能凑合。

但如果你希望你的项目看起来像 2026 年的正经开源项目,或者你想让你的用户在修改配置时少骂两句街,那还是换成 TOML 吧。


“如果你想加速Python学习,获得专业的指导,30天学会一门技能!

欢迎参加麦叔Python实战训练营,入门营机器学习营办公自动化营同步开放。

详情点这里:麦叔Python训练营


如果你希望我更新某个特定小知识,欢迎给我留言。

原文链接:https://www.zsiss.com/9954.html,转载请注明出处。
0

评论0

请先
响应式网络软件网站模板29833
响应式网络软件网站模板29833
3分钟前 有人购买 去瞅瞅看

社交账号快速登录