展示HN:JSON-io – 用于JSON、JSON5和TOON的Java库(减少40%的LLM令牌)
我在 json-io 这个 Java 序列化库中实现了 TOON 支持。TOON 是一种基于缩进的格式,专为 LLM 应用设计,因为在这些应用中,每个令牌都需要付费并占用上下文窗口。<p>与 JSON 相同的数据,令牌数量减少约 40-50%。没有大括号、方括号、逗号或不必要的引号。统一对象的数组会自动转换为类似 CSV 的表格。<p>JSON:
{"team":"Rockets","players":[{"name":"John","age":30},{"name":"Sue","age":27}]}<p>TOON:
team: Rockets
players:
name, age
John, 30
Sue, 27<p>json-io 可以读取和写入 JSON、JSON5 和 TOON,支持 60 多种内置 Java 类型,具有循环支持和零配置。此外,还有一个 Spring Boot 启动器和 Spring AI 模块。<p>GitHub: <a href="https://github.com/jdereg/json-io" rel="nofollow">https://github.com/jdereg/json-io</a>
TOON 规范: <a href="https://toonformat.dev" rel="nofollow">https://toonformat.dev</a>
Baeldung 文章: <a href="https://www.baeldung.com/java-json-toon-format-libraries" rel="nofollow">https://www.baeldung.com/java-json-toon-format-libraries</a>
查看原文
I built TOON support into json-io, a Java serialization library. TOON is an indentation-based format designed for LLM applications where every token costs money and eats context window.<p>Same data as JSON, ~40-50% fewer tokens. No braces, brackets, commas, or unnecessary quoting. Arrays of uniform objects become CSV-like tables automatically.<p>JSON:
{"team":"Rockets","players":[{"name":"John","age":30},{"name":"Sue","age":27}]}<p>TOON:
team: Rockets
players:
name, age
John, 30
Sue, 27<p>json-io reads/writes JSON, JSON5, and TOON with 60+ built-in Java types, cycle support, and zero config. There's also a Spring Boot starter and Spring AI module.<p>GitHub: <a href="https://github.com/jdereg/json-io" rel="nofollow">https://github.com/jdereg/json-io</a>
TOON spec: <a href="https://toonformat.dev" rel="nofollow">https://toonformat.dev</a>
Baeldung article: <a href="https://www.baeldung.com/java-json-toon-format-libraries" rel="nofollow">https://www.baeldung.com/java-json-toon-format-libraries</a>