यह क्या करता है
JSON Schema, JSON डेटा का आकार बताने की शब्दावली है: किसी ऑब्जेक्ट में कौन-सी प्रॉपर्टी होनी चाहिए, हर वैल्यू किस टाइप की है, कौन-सी रेंज और पैटर्न मान्य हैं, ऐरे की लंबाई और बहुत कुछ। API इसे OpenAPI स्पेसिफ़िकेशन में, एडिटर कॉन्फ़िगरेशन फ़ाइलों में ऑटोकम्प्लीट के लिए, और बैक-एंड गलत रिक्वेस्ट ठुकराने के लिए इस्तेमाल करते हैं।
यह वैलिडेटर किसी JSON दस्तावेज़ को स्कीमा से जाँचता है और मिली हर समस्या की सूची देता है। हर एरर बताता है कि वह डेटा में कहाँ है (/tags/1 जैसा JSON Pointer), एक पढ़ने लायक संदेश, और स्कीमा का वह कीवर्ड जो फ़ेल हुआ, ताकि आप डेटा या स्कीमा जल्दी ठीक कर सकें। यह draft 2020-12, 2019-09, draft-07 और draft-04 का समर्थन करता है, जिसमें $ref, $defs, allOf/anyOf/oneOf, if/then/else, unevaluatedProperties और फ़ॉर्मैट जाँच शामिल हैं।
इस्तेमाल कैसे करें
- डेटा को JSON डेटा में और स्कीमा को JSON Schema में पेस्ट करें, या दोनों तरफ़ फ़ाइल अपलोड करें। उदाहरण जान-बूझकर कुछ गलतियों वाला यूज़र रिकॉर्ड लोड करता है।
- टाइप करते ही नतीजा अपडेट होता है: डेटा मान्य हो तो हरा बैज, वरना एरर की संख्या और उनकी सूची।
$schemaके हिसाब से चलने के लिए ड्राफ़्ट को ‘अपने-आप’ पर छोड़ें, या कोई वर्ज़न तय करें। पहली गलती पर रुकने के लिए सभी एरर दिखाएँ बंद करें।- एरर कॉपी करें सूची को सादे टेक्स्ट में कॉपी करता है, बग रिपोर्ट या कोड रिव्यू के लिए।
अगर किसी एक तरफ़ का JSON मान्य नहीं है, तो संदेश बताता है कि समस्या डेटा में है या स्कीमा में, साथ में लाइन और कॉलम भी।
उदाहरण
इस स्कीमा के साथ:
{
"type": "object",
"required": ["id"],
"properties": {
"id": { "type": "integer" },
"age": { "type": "integer", "minimum": 0 }
}
}
दस्तावेज़ {"age": -1} दो एरर देता है: (रूट) पर ज़रूरी प्रॉपर्टी id गायब है; /age पर वैल्यू न्यूनतम 0 से कम है।
सुझाव
गलत लिखे प्रॉपर्टी नाम पकड़ने के लिए "additionalProperties": false जोड़ें, वरना वे चुपचाप निकल जाते हैं। तय वैल्यू के लिए enum या const और प्रोडक्ट कोड जैसी स्ट्रिंग के लिए pattern इस्तेमाल करें। स्कीमा बड़ा होने पर दोहराए गए हिस्सों को $defs में ले जाएँ और $ref से उनका हवाला दें।
अक्सर पूछे जाने वाले सवाल
› कौन-से JSON Schema वर्ज़न समर्थित हैं?
Draft 2020-12, 2019-09, draft-07 (जिसमें draft-06 भी शामिल है) और draft-04। ड्राफ़्ट को 'अपने-आप' पर रखने से वर्ज़न स्कीमा के $schema कीवर्ड से पढ़ा जाता है; बिना $schema वाले स्कीमा 2020-12 माने जाते हैं।
› एरर में दिखने वाले पाथ का क्या मतलब है?
पहला पाथ एक JSON Pointer है जो आपके डेटा की उस वैल्यू की ओर इशारा करता है जो जाँच में फ़ेल हुई, जैसे /items/2/price; (रूट) का मतलब पूरा दस्तावेज़ है। धूसर लाइन फ़ेल हुआ कीवर्ड और स्कीमा में उसकी जगह दिखाती है, जैसे minimum · #/properties/age/minimum।
› क्या email और date-time जैसे फ़ॉर्मैट जाँचे जाते हैं?
हाँ। आम फ़ॉर्मैट जाँचे जाते हैं: date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uuid, regex, json-pointer और अन्य। अनजान फ़ॉर्मैट को, जैसा स्पेसिफ़िकेशन अनुमति देता है, अनदेखा किया जाता है।
› क्या स्कीमा दूसरी फ़ाइलों का हवाला दे सकता है?
एक ही स्कीमा के अंदर के रेफ़रेंस काम करते हैं, जैसे #/$defs/address की ओर $ref। बाहरी URL डाउनलोड नहीं होते, क्योंकि कुछ भी आपके ब्राउज़र से बाहर नहीं जाता; जिन परिभाषाओं का हवाला है उन्हें $defs में पेस्ट करें।