टूल
गाइड

JSON Schema सत्यापनकर्ता

JSON

JSON Schema (Draft-07 / 2019-09 / 2020-12) के विरुद्ध JSON सत्यापित करें (फ़ील्ड-वार उल्लंघन सहित), या नमूने से स्कीमा अनुमानित करें।

100% क्लाइंट-साइड कोई बैकएंड नहीं

दूरस्थ URL लाए नहीं जाते; अपना JSON सीधे पेस्ट करें।

स्कीमा
डेटा
स्कीमा और डेटा (सत्यापन) या नमूना (अनुमान) दर्ज करें।
इस पृष्ठ पर

JSON Schema औज़ार क्या है?#

अपने आप में एक JSON वैल्यू आपको बताता है कि डेटा क्या है — यहाँ एक स्ट्रिंग, वहाँ एक नंबर। यह नहीं बताता कि डेटा क्या होना चाहिए: कि क्या age एक ऋणात्मकेतर पूर्णांक होना चाहिए, कि क्या email आवश्यक है, कि क्या tags को खाली होने की अनुमति है। JSON Schema इन चीज़ों को कहने का शब्दावली है। आप एक स्कीमा लिखते हैं — एक छोटा JSON दस्तावेज़ जो एक आकार का वर्णन करता है — और एक वैलिडेटर जाँचता है कि कोई डेटा उस आकार में फ़िट बैठता है या नहीं, फ़ील्ड-दर-फ़ील्ड।

यह पेज एक ही स्कीमा इंजन से दो काम करता है। सत्यापित करें एक स्कीमा और एक डेटा दस्तावेज़ लेता है और सटीक रूप से बताता है कि कौन से फ़ील्ड कौन से नियम तोड़ते हैं, हर एक को दस्तावेज़ में उसके पाथ पर टाँका हुआ। अनुमानित करें दूसरी ओर जाता है: इसे एक नमूना JSON वैल्यू दें और यह संरचना पर चलकर हर फ़ील्ड का टाइप रिकॉर्ड करके आपके लिए एक Draft-07-शैली का स्कीमा लिख देता है। दोनों स्वाभाविक रूप से जुड़ते हैं — एक प्रतिनिधि नमूने से स्कीमा अनुमानित करें, फिर हर भविष्य के दस्तावेज़ को उसके विरुद्ध वैलिडेट करें।

वैलिडेशन उसी Ajv इंजन पर चलता है जो प्रोडक्शन कोड उपयोग करता है, जिसमें तीन ड्राफ़्ट चयन योग्य हैं (Draft-07, 2019-09, 2020-12) और सख्त-मोड गार्ड ढीला किया गया है, ताकि थोड़ा गैर-सख्त स्कीमा बर्दाश्त किया जाए सीधे अस्वीकार करने के बजाय।

इसका उपयोग कैसे करें#

  1. टूलबार टॉगल से कोई मोड चुनें:
    • सत्यापित करें (डिफ़ॉल्ट): अपना स्कीमा बाईं ओर, अपना डेटा दाईं ओर चिपकाएँ।
    • अनुमानित करें: बाईं ओर एक नमूना JSON वैल्यू चिपकाएँ, दाईं ओर जनरेट किया गया स्कीमा पढ़ें।
  2. सत्यापित करें मोड में, वह ड्राफ़्ट चुनें जिसके विरुद्ध स्कीमा लिखा गया है — Draft-07 जंगल में मौजूद स्कीमाज़ के बहुसंख्यक को कवर करता है; केवल तभी 2019-09 या 2020-12 चुनें जब आपका स्कीमा उन ड्राफ़्ट्स द्वारा लाई गई विशेषताओं का उपयोग करता हो।
  3. आउटपुट के लिए एक इंडेंट चुनें — 2 या 4 स्पेस। अनुमान मोड में यह जनरेट किए गए स्कीमा के फ़ॉर्मेटिंग को नियंत्रित करता है।
  4. दायाँ पैनल या तो डेटा दस्तावेज़ (सत्यापित करें) या अनुमानित स्कीमा (अनुमानित करें) दिखाता है। पैनल लेबल मोड के अनुसार बदलते हैं।
  5. सत्यापित करें मोड में, पैनलों के नीचे उल्लंघन पैनल हर उल्लंघन को path — reason के रूप में सूचीबद्ध करता है। दस्तावेज़ का रूट (root) के रूप में दिखाया जाता है; कोई नेस्टेड फ़ील्ड अपने JSON Pointer के रूप में दिखता है, जैसे /age
  6. अनुमानित स्कीमा या डेटा लेने के लिए दाएँ पैनल पर कॉपी, या लोड या रीसेट करने के लिए नमूना / साफ़ करें

परिणाम दोनों इनपुट पार्स होते ही गणना होते हैं। स्कीमा या डेटा सिंटैक्स त्रुटि को उसकी सटीक पंक्ति और स्तंभ के साथ रिपोर्ट किया जाता है, स्कीमा, डेटा, या कंपाइल समस्या के रूप में टैग किया जाता है ताकि आप जानें कि कहाँ देखें।

प्रमुख विशेषताएँ#

  • दो मोड, एक इंजन। दस्तावेज़ वैलिडेट करें, या एक नमूने से एक स्कीमा जनरेट करें, नीचे उसी भरोसेमंद वैलिडेटर के साथ।
  • तीन ड्राफ़्ट। Draft-07, 2019-09, और 2020-12 प्रत्येक केवल अपना ही कंपाइल किया गया वैलिडेटर लोड करते हैं, इसलिए आप हमेशा उसी ड्राफ़्ट के विरुद्ध वैलिडेट करते हैं जिसे आप वास्तव में लक्षित करते हैं।
  • सभी त्रुटियाँ, न केवल पहली। हर उल्लंघन एकत्रित किया जाता है, इसलिए पाँच समस्याओं वाला दस्तावेज़ पाँच समस्याएँ दिखाता है बजाय पाँच राउंड ट्रिप थोपने के।
  • पाथ-टाँके उल्लंघन। हर उल्लंघन दस्तावेज़ में अपने स्थान की ओर इशारा करता है — पूरे-दस्तावेज़ की समस्याओं के लिए (root), या /user/address/zip जैसा एक सटीक पॉइंटर।
  • सख्त मोड ढीला। अज्ञात कीवर्ड या अनुपस्थित टॉप-लेवल टाइप वाला स्कीमा बर्दाश्त किया और चलाया जाता है, कंपाइल समय पर अस्वीकार नहीं — एक औज़ार के लिए सही व्यवहार जिसका काम जाँचना है, उपदेश देना नहीं।
  • केवल स्थानीय। स्कीमा और डेटा आपके ब्राउज़र में प्रोसेस होते हैं। कुछ भी अपलोड नहीं होता।

कार्य उदाहरण#

एक user ऑब्जेक्ट के पास name होना ही चाहिए, और age एक ऋणात्मकेतर पूर्णांक होना चाहिए। यह स्कीमा सत्यापित करें मोड में बाईं ओर चिपकाएँ:

{
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "age": { "type": "integer", "minimum": 0 }
  },
  "required": ["name"]
}

अब एक ऐसा दस्तावेज़ जाँचें जो दोनों नियम तोड़ता है — name अनुपस्थित, और age ऋणात्मक:

{
  "age": -3
}

उल्लंघन पैनल दो उल्लंघन रिपोर्ट करता है, हर एक को जहाँ वह हुआ वहाँ टाँका:

(root) — must have required property 'name'
/age   — must be >= 0

(root) पाथ बताता है कि अनुपस्थित आवश्यक प्रॉपर्टी एक दस्तावेज़-स्तर की समस्या है; /age सीधे गलत फ़ील्ड की ओर इशारा करता है। डेटा को {"name":"ada","age":36} में ठीक करें और स्थिति खाली उल्लंघन सूची के साथ वैध पर फ़्लिप हो जाती है। कारण टेक्स्ट Ajv का अपना कीवर्ड शब्द है, वैसे ही सुरक्षित रखा ताकि यह उससे मेल खाए जो आपके प्रोडक्शन लॉग कहेंगे।

अक्सर पूछे जाने वाले प्रश्न#

Draft-07, 2019-09, या 2020-12 — मैं क्या चुनूँ?#

Draft-07 व्यावहारिक डिफ़ॉल्ट है: ट्यूटोरियल्स, लाइब्रेरीज़, और OpenAPI विनिर्देशों में स्कीमाज़ का भारी बहुसंख्यक इसे लक्षित करता है, और जिसकी आपको संभावना है वह सब (type, properties, required, minimum, format, $ref) यहाँ काम करता है। केवल तभी 2019-09 या 2020-12 पर जाएँ जब आपका स्कीमा स्पष्ट रूप से उन ड्राफ़्ट्स की विशेषताओं का उपयोग करता हो — जैसे unevaluatedProperties या संशोधित $ref व्यवहार। ग़लत ड्राफ़्ट चुनना आमतौर पर फिर भी काम करता है, पर सुरक्षित विकल्प वही ड्राफ़्ट है जिसका स्कीमा लेखक ने इरादा किया था।

उल्लंघन संदेश अंग्रेज़ी में क्यों हैं?#

वे Ajv का अपना कारण टेक्स्ट हैं प्रत्येक कीवर्ड के लिए (must have required property, must be >= 0, इत्यादि), बिना बदले पारित। मुद्दा संगतता है: ये वे सटीक स्ट्रिंग्स हैं जो आपका सर्वर-साइड वैलिडेशन लॉग करेगा, इसलिए उन्हें यहाँ मिलाना एक बेमेल को प्रोडक्शन में ग्रेप-योग्य बनाता है।

“सख्त मोड ढीला” का क्या मतलब है?#

Ajv का सख्त मोड उन स्कीमाज़ को अस्वीकार करता है जिन्हें वह फूहड़ मानता है — एक अज्ञात कीवर्ड, एक $ref जिसे वह हल नहीं कर सकता, एक अनुपस्थित type। वह एक बिल्ड पाइपलाइन में उपयोगी है पर एक वैलिडेटर औज़ार के लिए गलत, जिसका काम आपके द्वारा दिए गए किसी भी स्कीमा के विरुद्ध डेटा जाँचना है। यह पेज सख्त मोड बंद कर देता है, इसलिए एक गैर-सख्त स्कीमा कंपाइल और चलता है फेंकने के बजाय।

क्या मैं एक स्कीमा अनुमानित करके फिर उसके विरुद्ध वैलिडेट कर सकता हूँ?#

हाँ — यही इरादा किया गया राउंड ट्रिप है। अनुमानित करें मोड में एक प्रतिनिधि नमूना चिपकाएँ, जनरेट किए गए स्कीमा को कॉपी करें, सत्यापित करें पर स्विच करें, और स्कीमा को वापस बाईं ओर चिपकाएँ। अनुमानित स्कीमा मूल नमूने को साफ़-सुथरा फिर से वैलिडेट करता है, और तब से आप हर नए दस्तावेज़ को उसके विरुद्ध जाँच सकते हैं।