专为 AI 打造的数据格式 TOON

终于有了一种专为 AI 打造的数据格式 TOON(Token-Oriented Object Notation)。它结合了 YAML 和 CSV 的优点,对 JSON 格式的数据进行了压缩,既省空间,又易于理解,尤其适合做为 LLM 的输入。

为什么需要 TOON

现在 AI 越来越强,能看懂的数据也越来越多,但用 JSON 传数据其实很浪费 Token。每个花括号、引号、逗号都要算在内,光是结构就能占掉不少篇幅。TOON 的聪明之处在于,用缩进代替大部分结构符号,数组用类似 CSV 的风格一行一行排列,把字段名提到表头,这样一来,数据的核心内容被最大程度地保留,重复的杂项被压缩、去除。

JSON

{
  "context": {
    "task": "Our favorite hikes together",
    "location": "Boulder",
    "season": "spring_2025"
  },
  "friends": ["ana", "luis", "sam"],
  "hikes": [
    {
      "id": 1,
      "name": "Blue Lake Trail",
      "distanceKm": 7.5,
      "elevationGain": 320,
      "companion": "ana",
      "wasSunny": true
    },
    {
      "id": 2,
      "name": "Ridge Overlook",
      "distanceKm": 9.2,
      "elevationGain": 540,
      "companion": "luis",
      "wasSunny": false
    },
    {
      "id": 3,
      "name": "Wildflower Loop",
      "distanceKm": 5.1,
      "elevationGain": 180,
      "companion": "sam",
      "wasSunny": true
    }
  ]
}

YAML

context:
  task: Our favorite hikes together
  location: Boulder
  season: spring_2025

friends:
  - ana
  - luis
  - sam

hikes:
  - id: 1
    name: Blue Lake Trail
    distanceKm: 7.5
    elevationGain: 320
    companion: ana
    wasSunny: true
  - id: 2
    name: Ridge Overlook
    distanceKm: 9.2
    elevationGain: 540
    companion: luis
    wasSunny: false
  - id: 3
    name: Wildflower Loop
    distanceKm: 5.1
    elevationGain: 180
    companion: sam
    wasSunny: true

TOON

context:
  task: Our favorite hikes together
  location: Boulder
  season: spring_2025

friends[3]: ana,luis,sam

hikes[3]{id,name,distanceKm,elevationGain,companion,wasSunny}:
  1,Blue Lake Trail,7.5,320,ana,true
  2,Ridge Overlook,9.2,540,luis,false
  3,Wildflower Loop,5.1,180,sam,true

不同格式的准确率和 Token 成本

TOON           ████████████████████   26.9  │  73.9% acc  │  2,744 tokens
JSON compact   █████████████████░░░   22.9  │  70.7% acc  │  3,081 tokens
YAML           ██████████████░░░░░░   18.6  │  69.0% acc  │  3,719 tokens
JSON           ███████████░░░░░░░░░   15.3  │  69.7% acc  │  4,545 tokens
XML            ██████████░░░░░░░░░░   13.0  │  67.1% acc  │  5,167 tokens

在 4 个 LLM 上对 209 个数据检索问题的准确率

claude-haiku-4-5-20251001
→ TOON           ████████████░░░░░░░░    59.8% (125/209)
  JSON           ███████████░░░░░░░░░    57.4% (120/209)
  YAML           ███████████░░░░░░░░░    56.0% (117/209)
  XML            ███████████░░░░░░░░░    55.5% (116/209)
  JSON compact   ███████████░░░░░░░░░    55.0% (115/209)
  CSV            ██████████░░░░░░░░░░    50.5% (55/109)

gemini-2.5-flash
→ TOON           ██████████████████░░    87.6% (183/209)
  CSV            █████████████████░░░    86.2% (94/109)
  JSON compact   ████████████████░░░░    82.3% (172/209)
  YAML           ████████████████░░░░    79.4% (166/209)
  XML            ████████████████░░░░    79.4% (166/209)
  JSON           ███████████████░░░░░    77.0% (161/209)

gpt-5-nano
→ TOON           ██████████████████░░    90.9% (190/209)
  JSON compact   ██████████████████░░    90.9% (190/209)
  JSON           ██████████████████░░    89.0% (186/209)
  CSV            ██████████████████░░    89.0% (97/109)
  YAML           █████████████████░░░    87.1% (182/209)
  XML            ████████████████░░░░    80.9% (169/209)

grok-4-fast-non-reasoning
→ TOON           ███████████░░░░░░░░░    57.4% (120/209)
  JSON           ███████████░░░░░░░░░    55.5% (116/209)
  JSON compact   ███████████░░░░░░░░░    54.5% (114/209)
  YAML           ███████████░░░░░░░░░    53.6% (112/209)
  XML            ███████████░░░░░░░░░    52.6% (110/209)
  CSV            ██████████░░░░░░░░░░    52.3% (57/109)

TOON 适合什么场景

最适合用来表示 “表格状” 的数据,像员工名单、商品列表、时间序列这些,每一行都是结构一致的对象。如果你的数据本来就很规整,TOON 就能最大程度节省 Token。官方的测试里,经常能比 JSON 少掉 30-60% 的长度。

TOON 的实现细节

  1. 支持缩进和不同分隔符(逗号、Tab、竖线),能进一步压缩体积
  2. 字符串只有在必须时才加引号,省掉大量标点
  3. 提供 TypeScript 库和命令行工具,支持一键格式转换,能够轻松和 JSON 格式进行切换
  4. 支持 “key folding”,能够把一层一层的嵌套字段折叠成一行,比如 data.metadata.items[2]: a,b,让数据更紧凑

更重要的是,LLM 更喜欢结构简单明的数据,对 TOON 数据的理解更精准,不容易出错。

当然,并不是所有情况下 TOON 都比 JSON 好。比如数据结构很深、每个对象的字段都不一样,这种情况还得老老实实用 JSON。

Github:github.com/toon-format/toon