2013-04-25 6 views
31

कभी कभी "आवश्यक" JSON स्कीमा में बनाम "वैकल्पिक" के बीच अंतर है, मैं निम्नलिखित JSON स्कीमा देखा:क्या

{ 
    "type": "object", 
    "properties": { 
     "address": { 
        "type": "string", 
        "required": true 
      } 
    } 

} 

बनाम

{ 
    "type": "object", 
    "properties": { 
     "address": { 
        "type": "string", 
        "optional": false 
      } 
    } 

} 

तो क्या required के बीच का अंतर बनाम है उपरोक्त उदाहरण में optional?

उत्तर

6

इसका मतलब है कि ऑब्जेक्ट में address संपत्ति (यदि required) के लिए गैर-undefined मान होना चाहिए।

15

असल में, वे समकक्ष अभिव्यक्ति हैं, लेकिन मानक के विभिन्न संस्करणों का उपयोग करते हैं।

optional v2 से है, required v3 से है। आपको यह सुनिश्चित करना चाहिए कि आप अपने टूल के लिए सही उपयोग कर रहे हैं (हालांकि आदर्श रूप से आपको v4 पर जाना चाहिए यदि आप कर सकते हैं)।

24

JSON स्कीमा की IETF draft v4 केवल required परिभाषित करता है और optional शामिल नहीं है।

मसौदा v4 से required पर section के शब्दों में:

मान्य मान: इस कीवर्ड का मान श्रेणी होनी चाहिए। इस सरणी में कम से कम एक तत्व होना चाहिए। इस सरणी के तत्व तार होना चाहिए, और अद्वितीय होना चाहिए। सफल सत्यापन के लिए

शर्तें: एक वस्तु उदाहरण इस कीवर्ड के खिलाफ मान्य है अगर अपनी संपत्ति सेट में इस कीवर्ड की सरणी मूल्य में सभी तत्व शामिल हैं।

वास्तव में, का उपयोग कर required वैकल्पिक सभी गुण जो के लिए नाम तार की दी गई सरणी में शामिल नहीं है बनाता है।

+0

मैं नहीं कह सकता कि लिंक में क्यों खाली होना आवश्यक है। लिंक सही है हालांकि – erikbwork

+2

@ erikb85 [link] (http://json-schema.org/latest/json-schema-validation.html#anchor61) में, "5.4.3 आवश्यक" केवल एक संपूर्ण शीर्षलेख है; इसके नीचे दो उप-वर्ग "आवश्यक" कीवर्ड उपयोग का विवरण देते हैं। –

+0

आह ठीक है, यह वास्तव में शौचालय को देखने से स्पष्ट नहीं था। आपकी आकृति में आपकी स्वरूपण रास्ता और स्पष्ट है। – erikbwork