Repolode
toon-format

toon-format/toon

一种紧凑、易读的 JSON 数据编码格式,用于减少向 LLM 提示词传递结构化数据时的 token 消耗。

Star
25,528
Fork
1,280
未关闭 Issue
2
最近提交
12天前

这是什么?

TOON(Token-Oriented Object Notation)以 JSON 数据模型为基础,对数据重新编码:嵌套对象使用类似 YAML 的缩进结构,同质数组则使用类似 CSV 的表格行。每个数组的头部声明了元素数量和字段列表,便于模型判断应有的行数以及每行包含哪些字段。

项目提供 TypeScript SDK,包含 encode、decode 函数以及面向大数据集的流式接口,并附带一个 CLI,可在 JSON 与 TOON 之间转换,并估算 token 节省量。编码过程无损,数据可以还原为原始 JSON。官方实现与社区移植版本遵循同一份规范,并有共享的一致性测试套件。

TOON 最适合由同质对象组成的数组。对于深度嵌套或结构不统一的数据,紧凑 JSON 可能更高效;纯扁平表格数据则直接用 CSV 体积更小。仓库中包含检索准确率和 token 数量的基准测试,对比了 JSON、YAML、XML 和 CSV。

核心功能

  • 01将 JSON 对象和数组编码为类似 YAML 的缩进格式,同质数据采用类 CSV 表格。
  • 02数组头部声明行数和字段名,便于发现被截断或格式错误的输出。
  • 03JSON 与 TOON 之间可无损往返转换。
  • 04提供 TypeScript SDK,包含 encode、decode 及流式接口。
  • 05CLI 支持文件或标准输入转换,并可通过 --stats 查看 token 节省量。
  • 06支持逗号、制表符和竖线三种分隔符。

适用场景

  • 将大批同质记录(如数据库查询结果)以更少 token 传入 LLM。
  • 在插入提示词前,把 JSON API 响应转换为更紧凑的格式。
  • 比较同一份 JSON 数据在 TOON 与其他格式下的 token 消耗。
  • 在 TypeScript 的 LLM 流水线中,使用可逆且带校验的数据表示。

快速上手

  1. 1

    无需安装,用 npx 对你自己的 JSON 数据试用 TOON

    cat data.json | npx @toon-format/cli --stats

使用前须知

  • 最适合统一结构的数组或按键组织的对象;对于深度嵌套或结构不统一的数据,普通 JSON 往往效果更好。
  • 该格式被描述为稳定但仍在演进,细节可能会变化。

标签

常见问题

toon 是什么?
一种紧凑、易读的 JSON 数据编码格式,用于减少向 LLM 提示词传递结构化数据时的 token 消耗。 TOON(Token-Oriented Object Notation)以 JSON 数据模型为基础,对数据重新编码:嵌套对象使用类似 YAML 的缩进结构,同质数组则使用类似 CSV 的表格行。每个数组的头部声明了元素数量和字段列表,便于模型判断应有的行数以及每行包含哪些字段。
toon 可以免费使用吗?用的什么许可证?
toon 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
toon 还在维护吗?
活跃维护中。toon 最近一次提交是在 2026年10月9日。
toon 适合用来做什么?
将大批同质记录(如数据库查询结果)以更少 token 传入 LLM。 在插入提示词前,把 JSON API 响应转换为更紧凑的格式。 比较同一份 JSON 数据在 TOON 与其他格式下的 token 消耗。 在 TypeScript 的 LLM 流水线中,使用可逆且带校验的数据表示。
toon 怎么安装和运行?
无需安装,用 npx 对你自己的 JSON 数据试用 TOON: cat data.json | npx @toon-format/cli --stats
在哪里获取 toon?
源代码和安装说明在 GitHub 上:https://github.com/toon-format/toon

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目