JSON Schema क्या है?
JSON Schema स्वयं JSON में लिखी एक शब्दावली है जो JSON दस्तावेज़ के अपेक्षित आकार का वर्णन करती है: कौन-सी प्रॉपर्टी हैं, उनके टाइप, कौन-सी आवश्यक हैं, और फ़ॉर्मेट, पैटर्न व रेंज जैसी शर्तें। स्कीमा के विरुद्ध पेलोड की जाँच कॉन्ट्रैक्ट के बहाव को यूज़र तक पहुँचने से पहले पकड़ लेती है।
JSON Schema वैलिडेटर कैसे इस्तेमाल करें
- पहले एडिटर में JSON डॉक्यूमेंट और दूसरे में JSON Schema पेस्ट करें।
- Validate पर क्लिक करें।
- उल्लंघन तालिका देखें; हर पंक्ति बताती है कि कौन-सी वैल्यू क्यों विफल हुई।
JSON Schema वैलिडेटर की खूबियाँ
- draft-07, 2019-09 और 2020-12 के मुख्य कीवर्ड के विरुद्ध वैलिडेट करता है
- नेस्टेड ऑब्जेक्ट, ऐरे, टपल, enum, पैटर्न, फ़ॉर्मेट और संख्यात्मक सीमाएँ समर्थित
- allOf / anyOf / oneOf / not, if-then-else और लोकल $ref संभालता है
- हर उल्लंघन को JSON पाथ, कीवर्ड, संदेश और स्कीमा की जगह के साथ सूचीबद्ध करता है
- स्कीमा को खुद लिंट करता है और अज्ञात टाइप या अमान्य रेगुलर एक्सप्रेशन बताता है
- उल्लंघनों को CSV के रूप में एक्सपोर्ट करता है
JSON Schema वैलिडेटर का उदाहरण
यूज़र ऑब्जेक्ट को वैलिडेट करना
इनपुट:
Document: {"email":"layla@example","age":17}
Schema: {"type":"object","required":["id"],"properties":{"email":{"format":"email"},"age":{"minimum":18}}}आउटपुट:
$ required Missing required property "id".
$.email format String is not a valid email.
$.age minimum Value must be ≥ 18.JSON डॉक्यूमेंट
भाग 1:{ "email": भाग 2:"layla@example", "age": भाग 3:17 }
JSON Schema
{ "type": "object", भाग 1:"required": ["id"], "properties": { "email": { भाग 2:"format": "email" }, "age": { भाग 3:"minimum": 18 } } }
- 1
required:"id"मौजूद नहींMissing required property "id".$ → #/requiredफ़ेल - 2
format: मान्य email नहींString is not a valid email.$.email → #/properties/email/formatफ़ेल - 3
minimum: 17 न्यूनतम 18 से कम हैValue must be ≥ 18.$.age → #/properties/age/minimumफ़ेल
ऊपर वाला उदाहरण। हर मैसेज के नीचे: पाथ → स्कीमा लोकेशन, जैसा उल्लंघन तालिका में है। ग़ायब प्रॉपर्टी उस ऑब्जेक्ट पर बताई जाती है जिसमें उसे होना चाहिए, यहाँ $।
JSON Schema वैलिडेटर के बारे में अक्सर पूछे जाने वाले सवाल
JSON Schema के कौन-से ड्राफ़्ट समर्थित हैं?
draft-07, 2019-09 और 2020-12 के मुख्य कीवर्ड: type, properties, required, enum, const, pattern, format, संख्यात्मक और लंबाई संबंधी शर्तें, items/prefixItems, contains, allOf/anyOf/oneOf/not, if/then/else, dependentRequired और लोकल $ref।
क्या रिमोट $ref संदर्भ हल किए जाते हैं?
सिर्फ़ लोकल संदर्भ (#/definitions/… और #/$defs/…) हल किए जाते हैं। रिमोट URL लोड नहीं किए जाते, इसलिए बाहरी स्कीमा पहले इनलाइन कर लें।
कौन-से स्ट्रिंग फ़ॉर्मेट जाँचे जाते हैं?
email, date-time, date, time, uuid, uri, hostname, ipv4, ipv6, regex और json-pointer। अज्ञात फ़ॉर्मेट अनदेखे कर दिए जाते हैं, जैसा विनिर्देश सुझाता है।
उल्लंघन कैसे बताए जाते हैं?
हर उल्लंघन में गड़बड़ वैल्यू का JSON पाथ, विफल हुआ स्कीमा कीवर्ड, आसान भाषा में संदेश और स्कीमा के भीतर उसकी जगह बताई जाती है।
तकनीकी नोट्स
यह वैलिडेटर बिना किसी बाहरी डिपेंडेंसी के बनाया गया है और कीवर्ड को रिकर्सिव रूप से जाँचते हुए इंस्टेंस पाथ तथा स्कीमा पाथ दोनों का हिसाब रखता है। $ref के साथ मौजूद सहोदर कीवर्ड भी जाँचे जाते हैं (2019-09+ वाला व्यवहार) और OpenAPI का nullable एक्सटेंशन भी माना जाता है।
संदर्भ
- JSON Schema SpecificationJSON दस्तावेज़ की संरचना का वर्णन और वैलिडेशन करने की शब्दावली (टाइप, आवश्यक प्रॉपर्टी, फ़ॉर्मेट)।
- RFC 8259: The JavaScript Object Notation (JSON) Data Interchange FormatJSON का व्याकरण: ऑब्जेक्ट, ऐरे, स्ट्रिंग, नंबर, तीन लिटरल और इंटरचेंज एन्कोडिंग के रूप में UTF-8।