JSON سے TypeScript / Go / Rust سٹرکچر جنریٹر
JSON پیسٹ کریں، ٹارگٹ زبان منتخب کریں، محاوراتی ٹائپ ڈیفینیشن حاصل کریں۔ TypeScript، Go، Rust، Kotlin، Java، C# اور Python TypedDict سپورٹ۔ quicktype پر مبنی، براؤزر میں چلتا ہے۔
- بائیں ٹیکسٹ ایریا میں نمائندہ JSON نمونہ پیسٹ کریں۔
- ہدف ڈراپ ڈاؤن سے ہدف زبان منتخب کریں۔
- تیار کریں پر کلک کریں۔ پہلی کلک انجن لوڈ کرتی ہے (4G کنکشن پر ~2–3 سیکنڈ)؛ بعد کی جنریشنز فوری ہیں۔
- نتیجہ کاپی کریں، یا درست فائل ایکسٹینشن کے ساتھ ڈاؤن لوڈ کریں۔
یہ کیا کرتا ہے؟
ایک یا زیادہ JSON نمونوں سے سکیما کا اندازہ لگا کر آپ کی ہدف زبان میں محاوراتی ٹائپس تیار کرتا ہے۔ فیلڈ ٹائپس کا اندازہ لگایا جاتا ہے — سٹرنگز سٹرنگز رہتی ہیں، نمبرز زبان کی نمبر قسم بنتے ہیں، بولینز bool بنتے ہیں، ایرے سلائسز/فہرستیں/ایرے بنتے ہیں، نیسٹڈ آبجیکٹس نیسٹڈ ٹائپس بنتے ہیں۔ اختیاری فیلڈز (وہ جو نمونوں کے درمیان کبھی null ہوتے ہیں یا غائب ہوتے ہیں) آؤٹ پٹ میں nullable کے طور پر نشان زد کیے جاتے ہیں۔ quicktype-core سے چلتا ہے، وہی انجن جو quicktype.io کے پیچھے ہے۔
مثال
JSON ان پٹ:
{
"name": "Ada",
"age": 36,
"active": true,
"tags": ["math", "logic"]
} TypeScript آؤٹ پٹ (ہدف = TypeScript، ٹائپ نام = User):
export interface User {
name: string;
age: number;
active: boolean;
tags: string[];
} عام مسائل اور انہیں کیسے سنبھالیں
JSON سے ٹائپ کا اندازہ لگانے کی بنیادی حدود ہیں — JSON ٹائپ سسٹم کو مکمل طور پر مقید کرنے کے لیے کافی معلومات نہیں رکھتا۔ ذیل کے پیٹرنز ان جگہوں کا احاطہ کرتے ہیں جہاں اندازہ شدہ ٹائپ آپ کی توقع سے میل نہیں کھا سکتی۔
- ایک نمونے سے اختیاری بمقابلہ ضروری۔ ایک واحد JSON آبجیکٹ جنریٹر کو نہیں بتا سکتا کہ کون سے فیلڈز اختیاری ہیں۔ متعدد نمونے فراہم کریں (نمائندہ آبجیکٹس کا JSON ایرے پیسٹ کریں) تاکہ جنریٹر کبھی کبھار غائب فیلڈز کو اختیاری کے طور پر نشان زد کر سکے۔
- خالی ایرے۔ `{"items": []}` `any` کا ایرے بناتا ہے — جنریٹر کے پاس اندازہ لگانے کے لیے کوئی ایلیمنٹ نہیں۔ کم از کم ایک بھرا ہوا مثال شامل کریں، یا جنریشن کے بعد ٹائپ کو ہاتھ سے درست کریں۔
- مختلف ایرے ایلیمنٹس۔ ایک JSON ایرے `[1, "two"]` ایک یونین ٹائپ بنتی ہے — کچھ ٹارگٹ زبانوں (خاص طور پر Go) میں نتیجہ سہل نہیں ہو سکتا۔ اگر آپ کے حقیقی ڈیٹا میں ایرے یکساں ہونی چاہیے، نمونہ ٹھیک کریں۔
- تاریخ کی سٹرنگز۔ JSON کی Date قسم نہیں ہے۔ ISO 8601 تاریخ کی سٹرنگز کو `string` کے طور پر اخذ کیا جاتا ہے۔ quicktype کبھی کبھار TypeScript آؤٹ پٹ میں انہیں Date کے طور پر شناخت کر سکتا ہے — اگر آپ مضبوط ٹائپنگ چاہتے ہیں تو ہاتھ سے ایڈجسٹ کریں۔
- صحت کھونے والے عددی IDs۔ 2^53 سے بڑے JSON نمبر (بڑے 64-bit IDs) JavaScript کے ذریعے پارس ہونے پر صحت کھو دیتے ہیں۔ تیار شدہ TypeScript ٹائپ بہر حال `number` استعمال کرتا ہے۔ 64-bit صحت کے لیے، اپنے JSON میں `string` استعمال کریں یا ہاتھ سے `bigint` ٹائپ پر منتقل ہوں۔
- انڈر اسکورڈ بمقابلہ camelCased فیلڈز۔ جنریٹر JSON فیلڈ نام محفوظ کرتا ہے۔ اگر آپ کا JSON snake_case استعمال کرتا ہے لیکن ٹارگٹ زبان camelCase کی توقع کرتی ہے، آؤٹ پٹ قابل اطلاق جگہوں پر serde/json اینوٹیشنز کے ساتھ snake_case فیلڈز استعمال کرتا ہے۔ پوسٹ-پراسیسنگ یا quicktype CLI فلیگز استعمال کرکے اوور رائڈ کریں۔
اکثر پوچھے جانے والے سوالات
پہلا تیار کریں سست کیوں ہے؟
quicktype انجن بنڈل تقریباً 465 KB gzipped ہے۔ یہ پہلی تیار کریں کلک پر لوڈ ہوتا ہے، جو 4G کنکشن پر 2–3 سیکنڈ لیتا ہے۔ اس کے بعد ماڈیول باقی پیج سیشن کے لیے کیشڈ ہو جاتا ہے — اور براؤزر اسے ویزٹس کے درمیان کیش کرتا ہے، تو بعد کی پہلی-کلکس بھی فوری ہیں جب تک کہ کیش صاف نہ کی گئی ہو۔
کیا میں متعدد JSON نمونوں سے تیار کر سکتا ہوں؟
اپنے نمونوں کو JSON ایرے میں لپیٹیں اور ایرے پیسٹ کریں۔ جنریٹر نمونوں کے درمیان دیکھے گئے فیلڈز کے یونین کا اندازہ لگاتا ہے اور کم از کم ایک سے غائب فیلڈز کو اختیاری کے طور پر نشان زد کرتا ہے۔ یہ یقینی بنانے کا صحیح طریقہ ہے کہ آپ کی تیار شدہ ٹائپس حقیقی ڈیٹا میں تبدیلی برداشت کریں۔
بیک اینڈ کوڈ کے لیے مجھے کون سی زبان منتخب کرنی چاہیے؟
وہ جو آپ کا پروجیکٹ پہلے سے استعمال کرتا ہے۔ Go آؤٹ پٹ `encoding/json` کے لیے معیاری سٹرکچر ٹیگز استعمال کرتا ہے۔ Rust serde derives استعمال کرتا ہے۔ Kotlin kotlinx.serialization اینوٹیشنز استعمال کرتا ہے۔ Java Jackson کے ساتھ ہم آہنگ POJOs بناتا ہے۔ انتخاب پروجیکٹ سے متعلق ہے، ترجیح پر مبنی نہیں۔
کیا فیلڈ تبصرے محفوظ ہیں؟
JSON میں تبصرہ سنٹیکس نہیں، لہذا ان پٹ میں منتقل کرنے کے لیے کوئی تبصرے نہیں۔ quicktype کچھ زبانوں کے لیے آؤٹ پٹ میں ڈاک تبصرے شامل کر سکتا ہے — یہ خودکار طور پر تیار شدہ تفصیل ہیں، صارف کا مواد نہیں۔
کیا میرا JSON اپ لوڈ ہوتا ہے؟
نہیں۔ سب کچھ آپ کے براؤزر میں چلتا ہے — آپ کا ان پٹ اس صفحے کے quicktype-core JavaScript ماڈیول کے ذریعے مقامی طور پر پراسس ہوتا ہے۔ quicktype-core خود اسی اوریجن (اس سائٹ کا سٹیٹک اثاثہ ہوسٹ) سے لوڈ ہوتا ہے؛ کوئی تیسرا فریق سرور آپ کا ڈیٹا نہیں دیکھتا۔
میں کتنا بڑا JSON نمونہ استعمال کر سکتا ہوں؟
جنریٹر کے قابل ذکر وقت لینے سے پہلے تقریباً 5 MB کا JSON۔ جنریٹر نمائندہ نمونوں کے لیے ڈیزائن کیا گیا ہے، مکمل ڈیٹاسیٹس کے لیے نہیں — عام طور پر چند آبجیکٹس صاف اسکیما کا اندازہ لگانے کے لیے کافی ہیں۔