sbsaga/toon
Composer 安装命令:
composer require sbsaga/toon
包简介
🧠 TOON for Laravel — a compact, human-readable, and token-efficient data format for AI prompts & LLM contexts. Perfect for ChatGPT, Gemini, Claude, Mistral, and OpenAI integrations (JSON ⇄ TOON).
关键字:
README 文档
README
Compact, human-readable, and token-efficient structured data for AI prompts, logs, and Laravel workflows
What This Package Is
TOON is a Laravel package for converting JSON or PHP arrays into a compact text format that stays readable to humans and efficient for AI-oriented workflows.
It is useful when JSON is too noisy for:
- ChatGPT, Gemini, Claude, Mistral, and OpenAI prompt payloads
- log snapshots and debug output
- internal structured storage or fixture review
- repeated API resource collections with the same fields
Why TOON Helps
JSON repeats a lot of structure. TOON removes much of that repetition while keeping the data understandable.
Example input:
$payload = [ 'project' => 'TOON', 'users' => [ ['id' => 1, 'name' => 'Alice', 'active' => true], ['id' => 2, 'name' => 'Bob', 'active' => false], ], ];
Example TOON output:
project: TOON
users:
items[2]{id,name,active}:
1,Alice,true
2,Bob,false
Core Features
Install in 60 Seconds
composer require sbsaga/toon
Optional config publishing:
php artisan vendor:publish --provider="Sbsaga\Toon\ToonServiceProvider" --tag=config
How It Works
Laravel Usage
Facade usage:
use Sbsaga\Toon\Facades\Toon; $toon = Toon::encode($payload); $decoded = Toon::decode($toon); $stats = Toon::estimateTokens($toon); $diff = Toon::diff($payload);
Replacer usage:
use Sbsaga\Toon\Facades\Toon; $toon = Toon::encodeWith($payload, function (array $path, string|int|null $key, mixed $value) { if ($key === 'debug') { return Toon::skip(); } if ($key === 'email') { return '[redacted]'; } return $value; });
Global helpers:
$toon = toon_encode($payload); $toonFiltered = toon_encode_with($payload, fn (array $path, string|int|null $key, mixed $value) => $value); $decoded = toon_decode($toon); $diff = toon_diff($payload);
Collection macro:
$toonRows = collect($payload['users'])->toToon();
Streaming convenience:
$lines = Toon::encodeLines($payload); // Generator<string> $decoded = Toon::decodeFromLines($lines);
CLI conversion (advanced options):
php artisan toon:convert storage/example.json --from=json --to=toon --stats php artisan toon:convert storage/example.toon --decode --strict --pretty php artisan toon:convert storage/example.json --mode=modern --delimiter=pipe --output=storage/example.toon
Laravel Integration Architecture
Backward Compatibility First
This release keeps legacy compatibility mode as the default so existing projects are less likely to break after upgrade.
Default stable API:
Toon::convert()Toon::encode()Toon::decode()Toon::estimateTokens()
New optional improvements:
Toon::diff()Toon::convertWith()Toon::encodeWith()Toon::skip()Toon::encodeLines()Toon::decodeFromLines()Toon::promptBlock()Toon::validate()Toon::contentType()Toon::fileExtension()toon_encode()toon_encode_with()toon_encode_lines()toon_decode()toon_diff()toon_prompt()toon_validate()Collection::toToon()Sbsaga\Toon\Concerns\Toonablestrict_modedelimitercompatibility_mode
If you want safer nested round trips and cleaner decode behavior for new work, opt into modern mode:
// config/toon.php 'compatibility_mode' => 'modern',
Reproducible Benchmark
The repository includes a synthetic benchmark fixture and runner:
Run it locally:
php benchmarks/run.php benchmarks/fixtures/paginated-users.json
Current result for the included synthetic fixture:
| Metric | JSON | TOON |
|---|---|---|
| Characters | 2622 | 1492 |
| Estimated comparison tokens | 656 | 373 |
| Character savings | 43.1% |
Notes:
- the fixture data is synthetic and repository-generated
- the token comparison is a lightweight heuristic for relative comparison
- repeated scalar rows usually benefit most from TOON tables
Why Trust This Package
- Laravel-native facade, service provider, helpers, and collection macro
- backward-safe default compatibility mode for existing users
- opt-in modern mode for cleaner nested-data behavior
- delimiter and strict parsing controls for production use
- benchmark fixture and docs included in the repo
- test coverage for encoder, decoder, helpers, macros, compatibility modes, and edge cases
Documentation
New here: start with Quickstart, then Cookbook: real-world examples.
Shipping to production: read Production playbook, then Migration guide, and keep Troubleshooting handy.
- Docs index
- Quickstart
- Cookbook: real-world examples
- Production playbook
- Upgrade safety for v1.3.0
- CLI conversion guide
- Replacer recipes
- Format and compatibility
- Syntax cheatsheet
- LLM integration guide
- Media type and files
- When not to use TOON
- Migration guide
- Benchmarks
- Use cases
- FAQ
- Troubleshooting
- Reference
- Article index
More README Files
Example Packages and Scenarios
- AI prompt compression example
- Log payload storage example
- LLM response validation example
- HTTP TOON response example
- Eloquent Toonable trait example
Branding Asset
License
Released under the MIT License.
sbsaga/toon 适用场景与选型建议
sbsaga/toon 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 49.41k 次下载、GitHub Stars 达 64, 最近一次更新时间为 2025 年 11 月 02 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「json」 「encoder」 「serialization」 「parser」 「decoder」 「converter」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 sbsaga/toon 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 sbsaga/toon 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 sbsaga/toon 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Fork of jms/serializer 1.14.1 with support for modern PHP versions.
Kinikit - PHP Application development framework MVC component
De/normalize business objects without tightly coupling them to your normalization format
base62 encoder and decoder also for big numbers with Laravel integration
ext-json wrapper with sane defaults
A package to cast json fields, each sub-keys is castable
统计信息
- 总下载量: 49.41k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 67
- 点击次数: 46
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-11-02







