इस लेख में
JSON Schema क्या है?
JSON Schema एक शब्दावली है जो आपको JSON डेटा के लिए संरचना और सत्यापन नियमों का वर्णन करने देती है। स्वयं JSON में लिखा गया एक schema यह परिभाषित करता है कि किसी object में कौन-सी properties हो सकती हैं, कौन-से प्रकार अनुमत हैं, कौन-से फ़ील्ड आवश्यक हैं, और कौन-सी बाधाएँ लागू होती हैं -- जिससे अनौपचारिक डेटा अनुबंध मशीन-पठनीय विनिर्देशों में बदल जाते हैं।
सबसे व्यापक रूप से इस्तेमाल किया जाने वाला संस्करण Draft-07 है, हालाँकि नए ड्राफ्ट (2019-09, 2020-12) conditional schemas और dynamic references जैसी सुविधाएँ जोड़ते हैं। एक JSON Schema जनरेटर schemas को हाथ से लिखने की उबाऊ प्रक्रिया को स्वचालित करता है -- यह नमूना JSON डेटा का विश्लेषण करता है और प्रकारों, संरचना तथा आवश्यक फ़ील्ड का स्वतः अनुमान लगाता है।
Schema जनरेशन कैसे काम करता है
एक schema जनरेटर आपके नमूना JSON की जाँच करता है और एक ऐसा schema बनाता है जो उसे सत्यापित कर सके। इस प्रक्रिया में प्रकार अनुमान, संरचना विश्लेषण और बाधा पहचान शामिल है।
- प्रकार अनुमान -- प्रत्येक मान की जाँच करके उसका JSON प्रकार (string, number, integer, boolean, null, array, object) निर्धारित किया जाता है और schema संबंधित type कीवर्ड सौंप देता है
- नेस्टेड संरचना विश्लेषण -- objects का पुनरावर्ती रूप से विश्लेषण करके प्रत्येक property के लिए सब-schemas जनरेट किए जाते हैं, और arrays की जाँच करके उनके elements से items schema का अनुमान लगाया जाता है
- आवश्यक फ़ील्ड पहचान -- नमूने में मौजूद सभी properties को आमतौर पर आवश्यक के रूप में चिह्नित किया जाता है, क्योंकि जनरेटर मानता है कि नमूना एक पूर्ण वैध instance का प्रतिनिधित्व करता है
निःशुल्क आज़माएँ — कोई साइनअप आवश्यक नहीं
JSON Schema जनरेट करें →JSON Schema कब इस्तेमाल करें
JSON Schema किसी भी ऐसे प्रोजेक्ट के लिए एक बुनियादी टूल है जो JSON डेटा भेजता या प्राप्त करता है।
- API अनुरोध सत्यापन -- संसाधित करने से पहले आने वाले payloads को एक schema के विरुद्ध सत्यापित करें, विकृत अनुरोधों को शुरू में ही अस्वीकार करें और API उपभोक्ताओं को स्पष्ट त्रुटि संदेश दें
- फ़ॉर्म जनरेशन -- react-jsonschema-form और vue-form-generator जैसी UI लाइब्रेरी एक JSON Schema से स्वतः फ़ॉर्म रेंडर कर सकती हैं, जिससे backend सत्यापन और frontend UI समकालिक रहते हैं
- CI/CD में अनुबंध परीक्षण -- एकीकरण परीक्षणों में सत्यापित करें कि API प्रतिक्रियाएँ अपेक्षित schema से मेल खाती हैं, जिससे breaking changes production तक पहुँचने से पहले पकड़ी जाती हैं
अक्सर पूछे जाने वाले सवाल
मुझे कौन सा JSON Schema ड्राफ्ट संस्करण इस्तेमाल करना चाहिए?
व्यापक अनुकूलता के लिए Draft-07 सबसे सुरक्षित विकल्प है -- अधिकांश validators, form generators और code generators इसका पूर्ण समर्थन करते हैं। यदि आपको $dynamicRef, prefixItems या unevaluatedProperties जैसी उन्नत सुविधाओं की ज़रूरत है तो 2020-12 का उपयोग करें। हमेशा जाँच लें कि आपकी validator लाइब्रेरी आपके चुने गए ड्राफ्ट का समर्थन करती है।
मैं कई schemas को कैसे जोड़ूँ?
JSON Schema composition कीवर्ड प्रदान करता है: allOf के लिए सभी सब-schemas का मिलान होना ज़रूरी है, anyOf के लिए कम से कम एक का मिलान होना ज़रूरी है, और oneOf के लिए ठीक एक का मिलान होना ज़रूरी है। पुन: उपयोग योग्य schema परिभाषाओं का संदर्भ देने के लिए $ref का उपयोग करें। उदाहरण के लिए, एक User schema किसी base PersonSchema को अतिरिक्त प्रमाणीकरण फ़ील्ड के साथ जोड़ने के लिए allOf का उपयोग कर सकता है।
क्या मैं किसी JSON Schema से TypeScript प्रकार जनरेट कर सकता हूँ?
हाँ। json-schema-to-typescript और quicktype जैसे टूल JSON Schemas को TypeScript interfaces में बदल देते हैं, जिससे आपके frontend प्रकार आपके backend अनुबंधों के साथ समकालिक रहते हैं। यह विशेष रूप से monorepos में उपयोगी है जहाँ schema API सत्यापन और client-side प्रकार जाँच दोनों के लिए सत्य का एकमात्र स्रोत बनता है।