与 JSON 对比

JSON 的设计目标是通用的序列化格式,因此它要保证足够的简单(语法简单)和简洁(体积小)。简单用来简化编程语言实现,简洁用来增加传递信息的密度。因此当你的目标是序列化的话,JSON 是较好的选择。

TOML 的设计目标是易读的配置文件格式,因此它的首要任务是设计明显的语义以方便人类的阅读。所以相对 JSON 而言它的语法更加丰富,而为了更易读,也相应的增加了不少冗余的表达,因此体积相对较大。

使用 JSON 作为配置文件格式?

JSON 作为配置文件格式使用,有很多缺点陈列如下:

  1. JSON 不支持注释;
  2. 对于复杂的结构定义,JSON 不易读;(想象一个多层嵌套的对象,每个对象都有多个键值对,当一屏无法展示时,将很难确定某个键的绝对路径)
  3. 无法原生表达日期/时间;
  4. 不易表达多行字符;
  5. 无法表达十六进制数值;

注意: JSON5 扩充了 JSON 的功能,弥补了部分上述所述的缺陷。但需要引入额外解析包,并没有大范围推广开。

但是考虑到 JS 对 JSON 有内置的支持,所以对于 JS 项目来说,使用 JSON 作为配置文件也未尝不可,但对于其他项目来说使用 TOML 作为配置文件或许是更好的选择。

使用 TOML 作为序列化格式?

相信我,一般情况下这不是明智的选择。

TOML 可以无歧义的映射成几乎所有编程语言的数据结构,但编程语言的数据结构序列化成 TOML 时将会有多种表达方式;同时 TOML 人类易读的属性也导致了序列化的文件会相对较大(有冗余的表达),并不利于不同服务间的传递。