TOON؛ همون دیتای JSON با توکن خیلی کمتر
خلاصهٔ کاملتر
تو صفحهٔ پروژه اومده که TOON (مخفف Token-Oriented Object Notation) یه جایگزین برای JSON نیست، بلکه یه لایهٔ ترجمهست: تو کدت با JSON کار میکنی و همون داده رو فقط موقع فرستادن به مدل زبانی به TOON انکود میکنی. ایدهش ترکیب دو چیزه؛ تورفتگی شبیه YAML برای آبجکتهای تودرتو، و جدول شبیه CSV برای دادهٔ یکدست. تیم پروژه میگه فرمت پایدار شده ولی هنوز در حال تکامله.
نقطهٔ قوتش جاییه که آرایهای از آبجکتهای همشکل داری؛ اون وقت لیست فیلدها فقط یکبار تو هدر اعلام میشه و بقیهش فقط ردیف دادهست:
location:
city: Berlin
country: DE
units: metric
alerts[2]: frost,wind
forecast[3]{day,temp{min,max},condition,rainChance}:
Mon,-2,4,snow,80
Tue,1,7,cloudy,20
Wed,3,11,sunny,5همین دادهٔ ساده تو JSON حدود ۱۱۷ توکن میگیره و تو TOON حدود ۶۶ تا. سه تا چیز اینجا همزمان دارن اتفاق میافتن: alerts[2] فرم inline (آرایهٔ ساده روی خود خط هدر)، forecast[3]{...} فرم tabular (اعلام یکبارهٔ فیلدها و بعد یک ردیف بهازای هر عضو) و temp{min,max} گروه فیلد تودرتو که آبجکتهای یکدست رو تو هدر جمع میکنه. یه فرم چهارم هم برای دادهٔ نامنظم هست که به لیست ساده برمیگرده.
همین [N] و {fields} صریح، فقط صرفهجویی نیستن؛ به مدل میگن دقیقاً چند ردیف و چه فیلدهایی انتظار داره. تو بنچمارک، این باعث شد TOON تو دستهٔ اعتبارسنجی ساختاری (تشخیص ردیف کموزیاد یا فیلد جاافتاده) به ۱۰۰٪ برسه، در حالی که JSON فرمتشده ۵۰٪ گرفت. برای امتحان روی دادهٔ خودت هم یه CLI هست که با npx اجرا میشه و کنار خروجی، آمار صرفهجویی توکن رو چاپ میکنه.
بنچمارک ۲۴۴ سؤال بازیابی داده رو روی ۴ مدل و ۶ فرمت اجرا کرده (در مجموع ۵۸۵۶ فراخوانی). نتیجه: دقت ۷۲.۲٪ برای TOON مقابل ۷۱.۴٪ برای JSON، ولی با ۴۲.۶٪ توکن کمتر — یعنی امتیاز کارایی ۲۹.۲ درصد دقت بهازای هر ۱۰۰۰ توکن در برابر ۲۳.۸ برای JSON فشرده. نویسندهها خودشون یادآوری میکنن که بازهٔ اطمینان دقتها همپوشانی داره، پس اختلاف دقت معنادار نیست؛ چیزی که واقعاً فرق میکنه هزینهٔ توکنه.
مستندات پروژه خیلی صریح میگه کجا نباید سراغش رفت: دادهٔ عمیقاً تودرتو یا نامنظم که هیچ بخشیش جدولی نمیشه (اونجا JSON فشرده برندهست)، دادهٔ کاملاً تخت که CSV براش کوچیکتره (TOON حدود ۵ تا ۱۰ درصد سربار داره و چیزی که بابتش میگیری، طول اعلامشده و لیست فیلدهاست)، و سناریوهایی که تأخیر مهمتر از توکنه — مخصوصاً مدلهای لوکال یا کوانتیزه که گاهی JSON فشرده رو سریعتر پردازش میکنن. به گفتهٔ خودشون، تأخیر تنها چیزیه که باید روی سیستم خودت اندازه بگیری.
نکات کلیدی:
- TOON همون مدل دادهٔ JSON رو بیاتلاف و برگشتپذیر انکود میکنه؛ برای ورودی مدل، نه برای کار برنامهنویسی
- ترکیب تورفتگی YAML با جدول CSV، بهعلاوهٔ طول صریح [N] و لیست فیلد {fields} بهعنوان راهنمای ساختار برای مدل
- تو بنچمارک ۲۴۴ سؤالی: دقت ۷۲.۲٪ مقابل ۷۱.۴٪ JSON با ۴۲.۶٪ توکن کمتر
- تو اعتبارسنجی ساختاری ۱۰۰٪ گرفت، جایی که JSON فرمتشده ۵۰٪ بود
- برای دادهٔ عمیقاً تودرتو JSON فشرده و برای دادهٔ کاملاً تخت CSV هنوز انتخاب بهتریه




