JSON और स्कीमा
JSON Schema enum: स्वीकार्य मान और उदाहरण
enum कीवर्ड किसी मान को तभी स्वीकार करता है जब वह घोषित सूची के किसी आइटम से गहराई तक बराबर हो। आइटम स्ट्रिंग, संख्या, बूलियन, null, ऐरे या ऑब्जेक्ट हो सकते हैं।
प्रकाशित
JSON Schema enum का उदाहरण
स्कीमा:
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": ["active", "pending", "disabled"]
}
},
"required": ["status"]
}मान्य
{ "status": "active" }अमान्य
{ "status": "deleted" }"deleted" enum सूची में नहीं है, इसलिए सत्यापन विफल होता है।
enum कीवर्ड क्या करता है
जब इंस्टेंस सूची के किसी JSON मान के बराबर हो, तब सत्यापन सफल होता है। तुलना अक्षरों के केस को ध्यान में रखती है और JSON प्रकार सुरक्षित रखती है।
{ "type": "string", "enum": ["active", "pending", "disabled"] }स्ट्रिंग, संख्या, बूलियन और null
Enum मान JSON मान हैं, लेबल नहीं। संख्या 1, स्ट्रिंग "1", बूलियन true और null चार अलग विकल्प हैं।
{ "enum": [1, "1", true, null] }JSON Schema enum में null कैसे स्वीकार करें
जब स्कीमा type और enum दोनों घोषित करता है, तब मान को दोनों पूरा करना होता है। यहाँ null स्वीकार करने के लिए अनुमत प्रकारों में "null" और enum में JSON मान null शामिल करें। केवल एक बाधा में जोड़ना पर्याप्त नहीं है।
{
"type": ["string", "null"],
"enum": ["active", "pending", null]
}ऑब्जेक्ट प्रॉपर्टी के भीतर enum
{
"type": "object",
"properties": { "status": { "enum": ["active", "pending"] } },
"required": ["status"]
}स्वीकार्य मानों के साथ अतिरिक्त कुंजियाँ नियंत्रित करने के लिए कॉन्फ़िगर करें: additionalProperties.
ऐरे के भीतर JSON Schema enum
जब ऐरे का हर एलिमेंट निश्चित सूची का होना चाहिए, तब items के भीतर enum रखें। उदाहरण के लिए ["read", "write"] मान्य है, जबकि ["read", "admin"] विफल है क्योंकि "admin" स्वीकार्य आइटम नहीं है।
{
"type": "array",
"items": {
"type": "string",
"enum": ["read", "write", "delete"]
}
}देखें: JSON Schema ऐरे गाइड — ऐरे आइटम और पूरे संग्रह को सीमित करने के और तरीकों के लिए।
enum बनाम const
| कीवर्ड | कब उपयोग करें | उदाहरण |
|---|---|---|
| enum | कई मान स्वीकार्य हों | active | pending |
| const | केवल एक मान स्वीकार्य हो | kind = user |
यदि स्वीकार्य मान स्कीमा शाखाओं में बदलते हैं, तो तुलना करें: oneOf, anyOf और allOf — ताकि शाखाओं के संयोजन का तरीका चुन सकें।
अक्षरों के केस और आम गलतियाँ
- Active और active अलग स्ट्रिंग हैं।
- enum किसी प्रॉपर्टी को अनिवार्य नहीं बनाता।
- संख्या और स्ट्रिंग के रूप एक-दूसरे के स्थान पर नहीं रखे जा सकते।
- जेनरेटर एक नमूने से भविष्य के सभी स्वीकार्य मान नहीं जान सकता।
बनाएँ, सुधारें और सत्यापित करें
प्रतिनिधि नमूनों से संरचनात्मक आधार बनाएँ, स्वीकृत enum सोच-समझकर जोड़ें, फिर स्वीकार और अस्वीकार होने वाले दोनों प्रकार के मान JSON Schema Validator में जाँचें।
अक्सर पूछे जाने वाले प्रश्न
JSON Schema में enum कैसे उपयोग करूँ?
स्वीकार्य JSON मानों के साथ enum जोड़ें। मान तभी सफल है जब वह किसी प्रविष्टि से मेल खाए और स्कीमा की बाकी बाधाएँ भी पूरी करे।
{ "type": "string", "enum": ["active", "pending"] }क्या JSON Schema enum में संख्या, बूलियन या null हो सकते हैं?
हाँ। enum JSON मान स्वीकार करता है और केवल स्ट्रिंग तक सीमित नहीं है। उदाहरण उन तीन मानों की अनुमति देता है। यदि type भी दिया गया है, तो उसे उनके प्रकार स्वीकार करने चाहिए।
{ "enum": [1, true, null] }JSON Schema में enum और const का क्या अंतर है?
enum स्वीकार्य मानों की सूची परिभाषित करता है; const ठीक एक मान की अनुमति देता है। कई विकल्पों के लिए enum और एक निश्चित मान के लिए const उपयोग करें।
उदाहरण आज़माएँ
देखे गए status डेटा से आधार स्कीमा बनाएँ
सोच-समझकर enum बाधा जोड़ने से पहले वास्तविक ऑब्जेक्ट रूप से शुरू करें।
{"status":"active","role":"admin"}अपेक्षित परिणाम: जेनरेटर स्ट्रिंग प्रॉपर्टी का अनुमान लगाता है; न देखे गए स्वीकार्य मान नहीं गढ़ता।
उदाहरण आज़माएँ
enum के बाहर का मान अस्वीकार करें
स्वीकृत स्टेटस सूची के विरुद्ध archived स्टेटस जाँचें।
enum: [active, pending, disabled]
value: archivedअपेक्षित परिणाम: /status पर सत्यापन विफल है क्योंकि archived स्वीकार्य मान नहीं है।
वास्तविक JSON से शुरू करें
आधार स्कीमा बनाएँ
संरचनात्मक स्कीमा का अनुमान लगाएँ, फिर वे enum मान जोड़ें जिन्हें आपका ऐप वास्तव में अनुमति देता है।