JSON से TypeScript / Go / Rust स्ट्रक्ट जनरेटर

JSON पेस्ट करें, टार्गेट लैंग्वेज चुनें, मुहावरेदार टाइप डेफ़िनिशन पाएं। TypeScript, Go, Rust, Kotlin, Java, C#, Python TypedDict समर्थित। quicktype आधारित, ब्राउज़र में चलता है।

  1. बाएँ टेक्स्ट एरिया में प्रतिनिधि JSON नमूना पेस्ट करें।
  2. टार्गेट ड्रॉपडाउन से टार्गेट लैंग्वेज चुनें।
  3. जनरेट क्लिक करें। पहली क्लिक इंजन लोड करती है (4G कनेक्शन पर ~2–3 सेकंड); अगली जनरेट तुरंत होती हैं।
  4. परिणाम कॉपी करें या सही फ़ाइल एक्सटेंशन के साथ डाउनलोड करें।
यह क्या करता है?

एक या अधिक 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-बिट IDs) JavaScript द्वारा पार्स होने पर सटीकता खो देते हैं। जनरेटेड TypeScript टाइप वैसे भी `number` का उपयोग करता है। 64-बिट सटीकता के लिए, अपने JSON में `string` का उपयोग करें या हाथ से `bigint` टाइप पर माइग्रेट करें।
  • अंडरस्कोर बनाम कैमलकेस फ़ील्ड्स। जनरेटर JSON फ़ील्ड नामकरण को संरक्षित रखता है। यदि आपका JSON snake_case का उपयोग करता है पर टार्गेट लैंग्वेज camelCase अपेक्षा करती है, आउटपुट snake_case फ़ील्ड्स के साथ लागू जगहों पर serde/json एनोटेशन देता है। पोस्ट-प्रोसेसिंग या quicktype CLI फ़्लैग का उपयोग करके ओवरराइड करें।
अक्सर पूछे जाने वाले प्रश्न

पहला जनरेट धीमा क्यों है?

quicktype इंजन बंडल gzipped लगभग 465 KB है। यह पहली जनरेट क्लिक पर लोड होता है, जो 4G कनेक्शन पर 2–3 सेकंड लेता है। उसके बाद मॉड्यूल बाकी पेज सत्र के लिए कैश हो जाता है — और ब्राउज़र इसे विज़िट के बीच कैश करता है, इसलिए कैश साफ़ न हो तो बाद की पहली क्लिक भी तुरंत होती हैं।

क्या मैं कई JSON नमूनों से जनरेट कर सकता हूँ?

अपने नमूनों को JSON ऐरे में लपेटें और ऐरे पेस्ट करें। जनरेटर सभी नमूनों में देखे गए फ़ील्ड्स के यूनियन का अनुमान लगाता है और कम से कम एक से अनुपस्थित फ़ील्ड को ऐच्छिक के रूप में चिह्नित करता है। यह सुनिश्चित करने का सही तरीका है कि आपके जनरेटेड टाइप वास्तविक डेटा की भिन्नता सहन कर सकें।

बैकएंड कोड के लिए मुझे कौन सी भाषा चुननी चाहिए?

जो आपका प्रोजेक्ट पहले से उपयोग करता है। Go आउटपुट `encoding/json` के लिए मानक स्ट्रक्ट टैग का उपयोग करता है। Rust serde derive का उपयोग करता है। Kotlin kotlinx.serialization एनोटेशन का उपयोग करता है। Java Jackson के अनुकूल POJO बनाता है। चुनाव प्रोजेक्ट-विशिष्ट है, प्राथमिकता पर आधारित नहीं।

क्या फ़ील्ड टिप्पणियाँ संरक्षित हैं?

JSON में टिप्पणी सिंटैक्स नहीं है, इसलिए इनपुट में ले जाने के लिए कोई टिप्पणियाँ नहीं हैं। quicktype कुछ भाषाओं के आउटपुट में डॉक टिप्पणियाँ शामिल कर सकता है — ये ऑटो-जनरेटेड विवरण हैं, उपयोगकर्ता सामग्री नहीं।

क्या मेरा JSON अपलोड होता है?

नहीं। सब कुछ आपके ब्राउज़र में चलता है — आपका इनपुट इस पेज के quicktype-core JavaScript मॉड्यूल द्वारा स्थानीय रूप से प्रोसेस होता है। quicktype-core स्वयं उसी मूल (इस साइट के स्थैतिक एसेट होस्ट) से लोड होता है; कोई तृतीय-पक्ष सर्वर आपका डेटा नहीं देखता।

मैं कितना बड़ा JSON नमूना उपयोग कर सकता हूँ?

जनरेटर के लक्षणीय रूप से समय लेने से पहले लगभग 5 MB तक का JSON। जनरेटर प्रतिनिधि नमूनों के लिए डिज़ाइन किया गया है, पूर्ण डेटासेट के लिए नहीं — आमतौर पर मुट्ठी भर ऑब्जेक्ट्स साफ़ स्कीमा अनुमान के लिए पर्याप्त हैं।