如何将 JSON 转换为 TOON
- 粘贴 JSON 或打开文件。TOON 输出结果和预估节省的 token 数会立即显示。
- 选择分隔符:逗号(默认)、制表符或竖线。使用制表符通常还能进一步减少 token。
- 将 TOON 复制到你的提示词中。如需读取模型返回的 TOON 结果,请将转换方向切换为 TOON → JSON。
TOON 与 JSON 对比示例
同样的两个用户,用 JSON 表示:
{"users":[{"id":1,"name":"Ada","role":"admin"},{"id":2,"name":"Bob","role":"user"}]}
用 TOON 表示:
users[2]{id,name,role}:1,Ada,admin2,Bob,user
字段名只在表头中写一次,而不是每个对象都写一遍,引号、花括号和大部分标点符号也都省掉了。对于结构统一的对象数组(数据库行、日志、搜索结果、商品列表),节省效果非常明显:在我们用 100 条客户记录进行的测试中,TOON 所需的 token 比格式化 JSON 少约 65%,比压缩 JSON 少 47%。[2] 长度标记还能让模型和解码器检查是否缺少行。
TOON 格式速览
| 数据 | TOON |
|---|---|
| 对象字段 | name: Ada |
| 嵌套对象 | address: 后跟缩进的字段 |
| 普通值组成的数组 | tags[3]: red,green,blue |
| 键相同的对象数组 | users[2]{id,name}: 后跟每个对象一行 |
| 混合或嵌套数组 | items[2]: 后跟以 - 开头的列表项 |
| 字符串 | 不加引号,除非包含分隔符、冒号、引号或括号,首尾有空格,或看起来像数字、true、false 或 null |
什么情况下 JSON 仍是更好的选择
- 多层嵌套或结构不规则的数据:当对象的键各不相同或包含嵌套对象时,TOON 会退回到缩进列表形式,节省效果随之缩小甚至消失。在 20 条各自包含嵌套地址和标签列表的记录中,TOON 仍比格式化 JSON 小 34%,但比压缩 JSON 大 12%。转换器会针对你的数据同时显示这两项对比。
- 机器接口:API、函数调用(function calling)和结构化输出都要求使用 JSON。
- 模型熟悉度:语言模型见过的 JSON 远多于 TOON;切换之前,请先用你自己的提示词检验回答质量。
- 极小的数据量:只有少量值时,差别可以忽略不计。
token 数按“字符数 ÷ 4”估算。确切数字取决于所用模型的分词器,但相对差异具有很好的参考价值。
常见问题
TOON 是什么?
TOON(Token-Oriented Object Notation)是一种紧凑、易读的 JSON 数据模型编码格式,专为 LLM 提示词设计。它对对象采用 YAML 风格的缩进,对结构统一的数组采用 CSV 风格的行。
TOON 比 JSON 更好吗?
如果要向语言模型发送表格型或结构统一的数据,通常是的:token 更少,并且数组长度一目了然。而对于 API、数据存储和多层嵌套的数据,JSON 仍是更好的选择。
token 数是如何估算的?
该工具将字符数除以 4 进行估算,这是英文文本和代码常用的经验法则,中文内容的实际 token 数通常更多。确切数量取决于所用模型的分词器。
可以把 TOON 转回 JSON 吗?
可以。将转换方向切换为 TOON → JSON 即可;解码器会检查声明的数组长度,并报告出现问题的行。