比 JSON 省 60% Token!这款 Java LLM大模型序列化库太香了

136 阅读2分钟

在 LLM API 调用按 Token 计费的时代,你还在为 JSON 的冗余格式买单吗?今天给大家推荐一个专为 Java 开发者打造的高效序列化库 ——TOON-Java,让你的 LLM 交互成本直接砍半!

为什么需要 TOON?

当我们用 JSON 和 GPT/Anthropic 等大模型交互时,大量的引号、括号其实都是无效 Token。而 TOON(Text-Oriented Object Notation)通过表格化存储 + 元数据前置的设计,平均节省 30-60% 的 Token 消耗,实测调用成本直接降一半!

更重要的是,它兼顾了人类和 LLM 的可读性,字段注释原生支持,让模型更懂你的数据结构,减少解析幻觉。(toon官方地址:github.com/toon-format…

✨ 核心优势一览

🔍 快速上手(3 分钟入门)

1. 引入依赖(Maven)

xml

<dependency>
    <groupId>com.github</groupId>
    <artifactId>toon-java</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

2. 定义带注释的实体类

// 地址类(嵌套对象)
class Address {
    @ToonField(order = 1, comment = "街道地址,含门牌号")
    private String street;
    
    @ToonField(order = 2, comment = "城市名称")
    private String city;
    // 构造函数+getter/setter
}

// 用户类
class User {
    @ToonField(order = 1, comment = "用户唯一ID")
    private int id;
    
    @ToonField(order = 2, comment = "用户名(最长32字符)")
    private String name;
    
    @ToonField(order = 3, comment = "注册时间(ISO格式)")
    private LocalDateTime registerTime;
    
    @ToonField(order = 4, comment = "用户地址")
    private Address address;
    // 构造函数+getter/setter
}

3. 序列化与反序列化

public class Demo {
    public static void main(String[] args) throws ToonException {
        // 构建数据
        Address addr = new Address("123 Main St", "New York");
        List<User> users = List.of(
            new User(1, "Alice", LocalDateTime.now(), addr)
        );
        
        // 序列化(带字段注释)
        String toonStr = Toons.serialize("users", users);
        System.out.println("TOON结果:\n" + toonStr);
        
        // 反序列化
        List<User> data = Toons.deserialize(toonStr, List.class);
    }
}

输出效果(Token 直接省一半)

users(1){id#用户唯一ID,name#用户名(最长32字符),registerTime#注册时间(ISO格式),address#用户地址{street#街道地址,含门牌号,city#城市名称}}: 
  1,Alice,2024-05-20T15:30,;
    address#用户地址{street#街道地址,含门牌号,city#城市名称}: 
      street: 123 Main St
      city: New York

🎯 哪些场景一定要用?

  • 按 Token 计费的 LLM API 调用(OpenAI/Anthropic 等)
  • RAG 知识库数据传输(平衡可读性和效率)
  • AI Agent 交互(结构化指令更清晰)
  • 大规模 LLM 应用(成本敏感型项目必选)

📌 注意事项

  • 不适合跨语言极致兼容场景(优先 JSON)
  • 深度嵌套非表格数据建议用 JSON
  • 极简数据结构且追求速度可选 Protobuf

目前项目基于 Apache 2.0 开源,已支持 JDK 1.8+,欢迎 Star 和 PR!无论是个人项目还是企业级应用,都能显著降低 LLM 交互成本,感兴趣的宝子们赶紧来试用吧😄

👉 Github  github.com/wuahhh/toon…

👉 码云  gitee.com/wuahhh/toon…