Skip to content

为什么选择 ASUN?

ASUN 不是为了替代所有 JSON,而是为了在“重复结构数据”这类场景里给出更好的表达方式。

1. Token 更省

JSON 会在数组中的每个对象里反复重复字段名。ASUN 把 schema 提到前面,只写一次。

json
{
  "users": [
    { "id": 1, "name": "Alice", "active": true },
    { "id": 2, "name": "Bob", "active": false }
  ]
}
asun
[{id@int, name@str, active@bool}]:
  (1, Alice, true),
  (2, Bob,   false)

对列表型负载,这通常意味着明显更低的 token 与更小的文本体积。

2. 解析模型更有优势

ASUN 的优势主要来自模型本身,而不是某一种实现技巧:

  • schema 只解析一次
  • 每一行只需要读值
  • 解码器可以按字段顺序工作
  • 不需要为每个对象反复匹配字段名

但具体倍数取决于实现

不同语言的实际表现会受到这些因素影响:

  • 语言与运行时
  • 实现成熟度
  • 文本还是二进制
  • 平面结构还是深层嵌套
  • 分配策略
  • benchmark 方法

所以网站不再把性能写成“所有语言统一的一个倍数”。

实现类型常见表现
原生 / 系统语言通常收益最大
托管运行时在真实负载里也常常很强
动态运行时在重复结构数据上依然可能有明显收益
较新的实现可能仍在调优中

如果你要看实现级说明,请直接看 性能概览benchmark notes

3. 对 LLM 更友好

ASUN 的输出更接近“有表头的行数据”,而不是一堆重复 key 的 JSON 对象。

  • 大多数字符串无需引号
  • 结构更线性
  • schema 可以在一次对话里复用

这通常意味着更少的格式错误和更低的 token 成本。

4. 对人也更友好

asun
[{id@int, name@str, role@str, score@float}]:
  (1, Alice, admin,   9.5),
  (2, Bob,   viewer,  7.2),
  (3, Carol, editor,  8.8)

当数据天然是“表格型”时,ASUN 通常比 JSON 更容易扫读。

什么时候继续用 JSON

下面这些场景不需要强行换成 ASUN:

  • 结构完全动态、字段变化很大
  • 需要对接外部 JSON API
  • 载荷很小,重复 key 根本不是问题

ASUN 最适合的是重复结构、同构数组、列表型数据交换。

基于 MIT 许可证发布。