piapia123
zh

TOON 与 JSON 互转

格式化

所有处理都在浏览器本地完成,数据不上传服务器

输入
把文件拖到这里可直接载入
输出

TOON(Token-Oriented Object Notation)是给大模型提示词用的紧凑写法:一组结构相同的对象被写成一张表,键名只在表头出现一次,行里全是数据。 ``` users[2]{id,name,role}: 1,Alice,admin 2,Bob,user ``` 同一份数据的 JSON 是 `[{"id":1,"name":"Alice","role":"admin"},…]` —— 每个对象都把三个键名重复一遍。TOON 省下来的正是这些重复,以及括号与引号。 ⚠️ 这里给的是字符数,不是 token 数。 TOON 的卖点就是省 token,所以那多半是你最想看的数字 —— 但算不准:token 数取决于具体分词器(GPT、Claude、开源的 BPE 各不相同,中文与代码的切分还不一样),要算得装一个 1–2 MB 的分词器,而那只算得出某一个分词器的答案,会被当成通用结论。所以给能算准的那部分。⚠️ 省了 40% 的字符与省了 40% 的 token 不是一回事。 ⚠️ 字符数对照里 JSON 那一侧用的是紧凑写法(没有缩进):TOON 省下来的主要是键名与括号,而那些在缩进过的 JSON 里被空白掩盖了 —— 拿带缩进的 JSON 去比会得出「TOON 没省多少」的错误结论。

功能

  • 两个方向:JSON → TOON 与 TOON → JSON,也可以手动指定
  • 三种分隔符:逗号、制表符(最省)、竖线
  • ⚠️ 给出字符数对照与变化百分比,负数表示 TOON 更短
  • ⚠️ 明确说明给的是字符数而不是 token 数,以及为什么算不准
  • ⚠️ 字符数对照里 JSON 用紧凑写法,避免被缩进误导
  • 键值对、嵌套对象、数组、表格化数组都能转
  • ⚠️ TOON 读不动时指出真实的两种原因:表格行数与声明对不上、引号没闭合
  • ⚠️ 提醒「有输出」不等于「读对了」—— TOON 的解析相当宽松
  • 全部在浏览器本地完成

使用方法

  1. 把 JSON 或 TOON 粘进去,方向自动识别
  2. 表格多的话可以换分隔符,制表符最省字符
  3. 看结果与字符数对照;要发给模型的话,看的是百分比那一行

常见问题

为什么只给字符数,不给 token 数?
因为算不准,而一个看起来很权威的错数字比没有数字更糟。token 数取决于具体分词器:GPT 的 cl100k 与 o200k、Claude 的、以及各种开源的 BPE 实现,切分结果都不同;中文、代码、JSON 这些内容在不同分词器下的差异更大。要算准得在页面里装一个 1–2 MB 的分词器,而它算出来的也只是某一个分词器的答案 —— 用户会把它当成通用的。所以给能算准的那一部分:字符数。字符数确实与 token 数高度相关(TOON 省下来的主要就是重复的键名与括号),但「省了 40% 的字符」不等于「省了 40% 的 token」。
TOON 到底省在哪里?
两处。一是重复的键名:一组结构相同的对象,JSON 里每个对象都要把 `"id"`、`"name"`、`"role"` 各写一遍,而 TOON 只在表头写一次,剩下的行全是数据。二是括号与引号:JSON 的 `{}`、`[]`、`""` 在大数组里占的量很可观。所以越规整的数据省得越多 —— 十个字段相同、几十行的表格能省一半以上;而一个只有三五个键、没有数组的对象,TOON 与 JSON 差不多长,甚至更长。
为什么表格要有 `[2]` 这个数字?
那是行数,TOON 用它来确认表格确实完整。它不是装饰 —— 解析器会拿它和实际读到的行数比对,对不上就报错(「Expected 3 tabular rows, but got 1」)。这一点在手工编辑 TOON 时很容易忘:删掉一行忘了改那个数字,读的时候就会报错。这是 TOON 解析器实际会拒绝的少数情况之一。
为什么说「有输出」不等于「读对了」?
因为 TOON 的解析相当宽松。实测下来它只会为两种情况报错:表格的行数与声明的数字对不上,以及引号没有闭合。除此之外,一行完全看不懂的文字会被当成一个字符串读进去 —— 你得到的是一份「成功」的结果,内容却不是你以为的。所以从别处复制 TOON 进来时,先扫一眼输出的 JSON 对不对,不要只看有没有报错。
什么时候该用 TOON?
往提示词里塞结构化数据的时候。它比 JSON 短,而且因为表格是逐行对齐的,模型读起来也不差。不该用的场合:机器之间传数据(那是 JSON 的地盘,所有语言的解析器都有且都稳)、需要严格规范的地方(TOON 还年轻,参考实现就是规范)、以及需要人反复手工编辑的配置文件(那个 `[N]` 计数容易忘改,而且没有工具会提醒你)。

相关工具