JSON Schema Generator और Validator
एक नमूने से एक JSON Schema जनरेट करें या एक JSON दस्तावेज़ को एक के विरुद्ध मान्य करें, सीधे आपके ब्राउज़र में। आपका डेटा कभी आपके डिवाइस से बाहर नहीं जाता।
स्कीमा जनरेशन और Ajv validation आपके ब्राउज़र में लोकल रूप से चलते हैं, इसलिए आपका JSON नमूना, स्कीमा और दस्तावेज़ कभी अपलोड नहीं होते।
इसके बजाय TypeScript टाइप चाहिए? JSON to TypeScript आज़माएँ।
JSON Schema Generator और Validator के बारे में
यह JSON Schema generator एक JSON नमूने को एक उपयोग-के-लिए-तैयार JSON Schema में बदलता है, और बिल्ट-इन validator किसी भी JSON दस्तावेज़ को आपके द्वारा प्रदान की गई एक स्कीमा के विरुद्ध जाँचता है। Generate मोड में यह आपके नमूने को चलता है, ऑब्जेक्ट, ऐरे, स्ट्रिंग, नंबर, बूलियन और null के लिए टाइप का अनुमान लगाता है, ऐरे आइटम एकीकृत करता है, और हर प्रॉपर्टी को required चिह्नित कर सकता है, additionalProperties को false सेट कर सकता है, और email, date, date-time, uri और uuid जैसे स्ट्रिंग फ़ॉर्मैट का पता लगा सकता है। आउटपुट के लिए draft-07 या 2020-12 चुनें। Validate मोड में यह allErrors और ajv-formats के साथ Ajv चलाता है, फिर हर विफलता को उसके instance path और संदेश के साथ सूचीबद्ध करता है। यह API डेवलपर्स, बैकएंड इंजीनियरों और JSON अनुबंध परिभाषित या टेस्ट करने वाले किसी भी व्यक्ति के लिए बनाया गया है। सब कुछ आपके ब्राउज़र में चलता है, इसलिए आपका पेस्ट किया गया नमूना और स्कीमा आपके डिवाइस पर ही रहते हैं।
विशेषताएँ
- एक पेस्ट किए गए JSON नमूने से ऑब्जेक्ट, ऐरे, स्ट्रिंग, नंबर, इंटीजर, बूलियन और null के सही टाइप के साथ एक JSON Schema का अनुमान लगाता है
- ऐरे तत्वों को एक items स्कीमा में एकीकृत करता है और खाली ऐरे के लिए items:{} उत्सर्जित करता है
- हर प्रॉपर्टी को required चिह्नित करने का टॉगल, प्रति ऑब्जेक्ट
- ऑब्जेक्ट को ज्ञात कीज़ तक सीमित करने के लिए additionalProperties:false टॉगल करें
- email, date, date-time, uri और uuid मानों के लिए वैकल्पिक स्ट्रिंग-फ़ॉर्मैट अनुमान
- draft-07 या 2020-12 आउटपुट चुनें, जो $schema डायलेक्ट सेट करता है
- allErrors और ajv-formats के साथ Ajv का उपयोग करके किसी भी JSON दस्तावेज़ को एक स्कीमा के विरुद्ध मान्य करें
- जनरेट की गई स्कीमा कॉपी करें या उसे schema.json के रूप में डाउनलोड करें
JSON Schema Generator और Validator का उपयोग कैसे करें
- एक स्कीमा बनाने के लिए Generate चुनें, या एक दस्तावेज़ जाँचने के लिए Validate।
- Generate में, एक JSON नमूना पेस्ट करें और required, additionalProperties और format विकल्प टॉगल करें।
- draft-07 या 2020-12 चुनें, फिर परिणामी schema.json कॉपी या डाउनलोड करें।
- Validate में, बाईं ओर एक JSON Schema और दाईं ओर एक JSON दस्तावेज़ पेस्ट करें।
- valid/invalid बैज और एरर की सूची पढ़ें, हर एक एक instance path के साथ।
उदाहरण
इनपुट
{
"id": 1,
"name": "Ada",
"email": "ada@example.com",
"tags": ["a", "b"]
}
आउटपुट
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"id": { "type": "integer" },
"name": { "type": "string" },
"email": { "type": "string", "format": "email" },
"tags": { "type": "array", "items": { "type": "string" } }
},
"required": ["id", "name", "email", "tags"]
}
required और format अनुमान चालू होने पर, नमूना एक draft-07 स्कीमा देता है।
सामान्य त्रुटियाँ और समस्या निवारण
- जनरेट की गई स्कीमा में कोई required ऐरे नहीं है भले ही हर की मौजूद हो। — "Mark all properties required" चालू करें; डिफ़ॉल्ट रूप से जनरेटर केवल टाइप का अनुमान लगाता है और required खाली छोड़ता है ताकि वैकल्पिक फ़ील्ड अति-सीमित न हों।
- Validation दस्तावेज़ जाँचने से पहले "Invalid JSON Schema" बताता है। — स्कीमा पेन स्वयं एक मान्य JSON ऑब्जेक्ट होना चाहिए जिसे Ajv कंपाइल कर सके; पहले स्कीमा में JSON सिंटैक्स या अज्ञात कीवर्ड ठीक करें।
- एक मान जो एक तिथि जैसा दिखता है उसे एक सादे स्ट्रिंग के रूप में टाइप किया जाता है। — "Infer string formats" सक्षम करें। पहचान संरक्षी है और केवल तब एक format जोड़ती है जब नमूना मान email, date, date-time, uri या uuid पैटर्न से मेल खाता है।
- एक 2020-12 स्कीमा को draft-07 की अपेक्षा करने वाले एक validator द्वारा अस्वीकार किया जाता है। — draft चयनकर्ता को अपने लक्ष्य से मेल खाने के लिए बदलें। यह केवल $schema URL और दोनों draft के बीच मामूली डायलेक्ट अंतर बदलता है।
अक्सर पूछे जाने वाले प्रश्न
- जनरेटर कौन सा JSON Schema draft उपयोग करता है?
- डिफ़ॉल्ट रूप से draft-07, 2020-12 के विकल्प के साथ। यह चुनाव आउटपुट पर $schema डायलेक्ट URL और draft के बीच मामूली अंतर सेट करता है; अनुमानित संरचना अन्यथा समान रहती है।
- एक स्कीमा जनरेट करते समय required प्रॉपर्टी कैसे तय की जाती हैं?
- डिफ़ॉल्ट रूप से कोई प्रॉपर्टी required चिह्नित नहीं होती, इसलिए स्कीमा आंशिक ऑब्जेक्ट स्वीकार करती है। हर ऑब्जेक्ट की हर की को उसके required ऐरे में जोड़ने के लिए "Mark all properties required" चालू करें।
- validator एरर कैसे बताता है?
- यह allErrors सक्षम के साथ Ajv चलाता है, इसलिए आपको हर विफलता एक साथ मिलती है। हर एरर JSON instance path (जैसे /items/0/id) और एक मानव-पठनीय संदेश दिखाता है, जिसमें छूटी हुई required कीज़ और अप्रत्याशित अतिरिक्त प्रॉपर्टी शामिल हैं।
- क्या जनरेटर email या date जैसे स्ट्रिंग फ़ॉर्मैट का अनुमान लगाता है?
- हाँ, जब "Infer string formats" चालू हो। यह नमूना स्ट्रिंग मानों को email, date, date-time, uri और uuid के पैटर्न के विरुद्ध जाँचता है और मिलता format कीवर्ड जोड़ता है; जो किसी से मेल नहीं खाते वे सादे स्ट्रिंग रहते हैं।
- यह ऐरे के लिए स्कीमा का अनुमान कैसे लगाता है?
- यह सभी ऐरे तत्वों की स्कीमा को एक अकेली items स्कीमा में विलीन करता है। मिश्रित ऑब्जेक्ट तत्व प्रॉपर्टी-दर-प्रॉपर्टी विलीन होते हैं, किसी भी तत्व से छूटी एक की required से बाहर हो जाती है, और एक खाली ऐरे items:{} बन जाता है।
- क्या मेरा JSON नमूना या स्कीमा कहीं अपलोड होता है?
- नहीं। जनरेशन और validation, Ajv सहित, पूरी तरह आपके ब्राउज़र में चलते हैं, इसलिए आपका पेस्ट किया गया नमूना, स्कीमा और दस्तावेज़ लोकल रूप से प्रोसेस होते हैं और आपके डिवाइस पर ही रहते हैं।
संबंधित टूल
- JSON फ़ॉर्मेटर — त्रुटि की स्थिति के साथ JSON को सुंदर बनाएँ, छोटा करें और वैलिडेट करें।
- JSON से TypeScript — JSON नमूने से TypeScript इंटरफ़ेस जेनरेट करें।
- JSON व्यूअर — विस्तृत/संक्षिप्त करने और नोड पाथ के साथ टेक्स्ट और फ़ोल्ड होने योग्य ट्री व्यूअर।
- JSON Diff — दो JSON दस्तावेज़ों की तुलना करें और एक संरचनात्मक diff देखें।
- JSON से कोड — JSON से Go, Rust, Python, Java, Kotlin, C# और TypeScript टाइप जेनरेट करें।
- OpenAPI / Swagger फ़ॉर्मेटर — OpenAPI / Swagger स्पेसिफिकेशन (JSON या YAML) को फ़ॉर्मेट व वैलिडेट करें और पाथ तथा ऑपरेशन गिनें।
सभी ArrayKit टूल