JSON और स्कीमा

JSON Schema additionalProperties को समझें

ऑब्जेक्ट स्कीमा डिफ़ॉल्ट रूप से अतिरिक्त प्रॉपर्टी स्वीकार करते हैं। बेमेल कुंजियाँ अस्वीकार करने के लिए additionalProperties को false सेट करें, या उनके मान जाँचने वाला स्कीमा दें।

प्रकाशित

डिफ़ॉल्ट: अतिरिक्त प्रॉपर्टी स्वीकार्य हैं

additionalProperties नियम के बिना debug या metadata फ़ील्ड केवल इसलिए सत्यापन में विफल नहीं होता कि वह properties में नहीं है।

{ "type": "object", "properties": { "name": { "type": "string" } } }

additionalProperties: false से अज्ञात फ़ील्ड अस्वीकार करें

{
  "type": "object",
  "properties": { "name": { "type": "string" } },
  "required": ["name"],
  "additionalProperties": false
}

स्कीमा से अतिरिक्त प्रॉपर्टी सत्यापित करें

{ "type": "object", "additionalProperties": { "type": "string" } }

properties बनाम patternProperties बनाम additionalProperties

कीवर्डकिससे मेल खाता है
propertiesसटीक प्रॉपर्टी नाम
patternPropertiesरेगुलर एक्सप्रेशन से मेल खाने वाले नाम
additionalPropertiesपहले दो से मेल न खाने वाले नाम

संयोजित स्कीमा और unevaluatedProperties

additionalProperties अपने स्कीमा स्थान के भीतर जाँचा जाता है, जो allOf उपयोग करने वालों को चकित कर सकता है। नए ड्राफ़्ट में unevaluatedProperties बाद की सीमा व्यक्त कर सकता है, लेकिन उसका उपयोग केवल समर्थित वैलिडेटर और घोषित ड्राफ़्ट के साथ करें।

आम गलतियाँ

  • मान लेना कि ऑब्जेक्ट डिफ़ॉल्ट रूप से बंद हैं।
  • ज्ञात फ़ील्ड का होना आवश्यक हो तब required भूलना।
  • एक allOf शाखा में additionalProperties: false रखकर यह अपेक्षा करना कि वह पड़ोसी प्रॉपर्टी देखेगा।
  • अनुकूलता की समीक्षा किए बिना API को बंद स्कीमा में बदलना।

उदाहरण आज़माएँ

अतिरिक्त ऑब्जेक्ट फ़ील्ड देखें

बंद कॉन्ट्रैक्ट चुनने से पहले debug फ़ील्ड वाले नमूने से आधार बनाएँ।

{"name":"Alice","age":30,"debug":true}

अपेक्षित परिणाम: बने स्कीमा में सभी देखे फ़ील्ड हैं और नीतिगत फैसले स्पष्ट रहते हैं।

उदाहरण आज़माएँ

अज्ञात debug फ़ील्ड अस्वीकार करें

बंद ऑब्जेक्ट स्कीमा उपयोग करें और अतिरिक्त प्रॉपर्टी की त्रुटि देखें।

additionalProperties: false
data: {name, age, debug}

अपेक्षित परिणाम: सत्यापन debug को अतिरिक्त प्रॉपर्टी मानकर अस्वीकार करता है।

नमूने से शुरू करें

ऑब्जेक्ट की संरचना बनाएँ

ज्ञात प्रॉपर्टी बनाएँ, फिर अपने कॉन्ट्रैक्ट की आवश्यक अतिरिक्त-फ़ील्ड नीति चुनें।

JSON to JSON Schema Generator खोलें →