JSON Structure؛ زبان اسکیمایی که به تایپهای زبان برنامهنویسی نزدیکتره
خلاصهٔ کاملتر
JSON Structure یه زبان اسکیماست برای تعریف ساختار و تایپ دادهها. سینتکسش خیلی شبیه JSON Schemaه، ولی طبق توضیح سایت پروژه، JSON Schema تمرکزش روی اعتبارسنجی سنده، یعنی چک کنه یه JSON درسته یا نه. JSON Structure اما میخواد اول یه زبان تعریف داده (data definition language) قوی باشه و اعتبارسنجی رو هم کنارش پشتیبانی کنه. یعنی اسکیمایی که مینویسی تمیز به کلاسهای زبان برنامهنویسیت و ساختارهای دیتابیس تبدیل میشه.
فرق اصلی تو سیستم تایپه. به جای فقط number و string، تایپهایی مثل uuid، decimal با precision و scale، double، datetime، set و map داری. این تیکه از مثال خود سایته که قیمت رو با دقت مشخص و واحد ارز، و وزن رو با واحد کیلوگرم تعریف میکنه:
"price": {
"type": "decimal",
"precision": 10,
"scale": 2,
"currency": "USD"
},کلیدواژههایی مثل currency و unit مال هستهی زبان نیستن و از افزونهها میان. هر اسکیما با کلید $uses اعلام میکنه کدوم افزونهها رو لازم داره. افزونهها شامل Import برای وارد کردن اسکیمای بیرونی، Alternate Names برای اسمها و توضیحات چندزبانه، Units برای واحدهای علمی و ارز و نماد UCUM (یعنی یه استاندارد برای نوشتن واحدهای اندازهگیری)، Validation، Conditional Composition، Relations و Semantic Annotations هستن.
به گفتهی پروژه، این توضیحات معنایی طوری طراحی شدن که هم برنامهنویس بفهمه و هم مدلهای زبانی بزرگ (LLM). مثلاً با altnames میشه گفت یه فیلد تو JSON اسمش product_nameه و تو انگلیسی و آلمانی چه برچسبی داره.
برای استفاده هم SDK رسمی برای TypeScript/JavaScript، پایتون، .NET، جاوا، Go، Rust، Ruby، R، Perl، PHP، Swift و C منتشر شده که همهشون هم خود اسکیما و هم دادهها رو در برابر اسکیما اعتبارسنجی میکنن. یه افزونهی VS Code هم هست که خطاها رو درجا نشون میده، IntelliSense برای کلیدواژهها داره و اصلاح سریع پیشنهاد میده. مشخصات فعلاً به شکل پیشنویس (draft) منتشر شده.
نکات کلیدی:
- سینتکس شبیه JSON Schemaه ولی هدف اصلیش تعریف دادهست، نه فقط اعتبارسنجی
- تایپهای دقیق مثل decimal با precision/scale، uuid، datetime، set و map داره
- افزونهها با کلید $uses فعال میشن، مثل Units برای واحد و ارز و Alternate Names برای اسمهای چندزبانه
- SDK رسمی برای ۱۲ زبان از جمله TypeScript، پایتون، Go، Rust و PHP منتشر شده
- افزونهی VS Code با IntelliSense و نمایش خطای درجا داره




