2015-06-25 9 views
5

पर शून्य के लिए JSON स्कीमा सत्यापन, मैं इसके लिए मान्य मान के रूप में शून्य को अनुमति देने से दायर एक जेसन को रोकना चाहता था। कीवर्ड का उपयोग करने का प्रयास किया, लेकिन कोई भाग्य नहीं है।"टाइप" = "स्ट्रिंग"

नीचे दिए गए जेसन को झूठी के रूप में मान्य करना चाहते हैं, क्योंकि फ़ील्ड आंकड़े शून्य के रूप में मान के रूप में।

{ 
    "stats": "null" 
} 

कृपया नीचे मेरी स्कीमा लगता है: -

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "id": "http://jsonschema.net#", 
    "type": "object", 
    "additionalProperties": false, 
    "maxProperties": 1, 
    "properties": { 
    "stats": { 
     "id": "http://jsonschema.net/stats#", 
     "type": "string", 
     "maxLength": 5, 
     "minLength": 2, 
     "additionalProperties": false, 
     "maxProperties": 1, 
     "not": {"type": "null"} 
    } 
    }, 

    "required": [ 
    "stats" 
    ] 
} 

हालांकि मैं दिया "नहीं": { "type": "अशक्त"}, यह अभी भी सफलतापूर्वक सत्यापित।

+0

मैंने '{" आंकड़े ":" शून्य "} के साथ सत्यापन करने की कोशिश की और यह असफल रहा। आप अपने JSON को कैसे मान्य कर रहे हैं? –

+0

क्या आप वाकई "शून्य" नहीं 'शून्य' हैं? इसके लिए एक स्ट्रिंग है, न कि 'शून्य' मान – Danielson

+0

मैं jsonSchema के साथ जेसन को मान्य करने के लिए जावा कोड का उपयोग कर रहा हूं। लेकिन मैं http://jsonschemalint.com/draft4/# का उपयोग करके प्रमाणीकरण की जांच कर रहा हूं, ताकि आप आसानी से परीक्षण कर सकें मार्ग। – Manu

उत्तर

1

वाह। यहां बहुत भ्रम है।

समस्या सरल है:

{ 
    "stats": "null" 
} 

"null", एक स्ट्रिंग है इस प्रकार यह वैध है (क्योंकि आप तार की अनुमति देते हैं)।

{ 
    stats: null 
} 

आशीष पाटिल से जवाब गलत है: अपने स्कीमा (अपने डेटा नहीं) में, जब आप प्रकार को निर्दिष्ट कर रहे हैं, प्रकार का नाम है यह आपकी स्कीमा है, जो काम करता है जैसा कि आप उम्मीद के रूप में द्वारा अनुमति नहीं दी जाएगी एक स्ट्रिंग। "not": {"type": null} निर्दिष्ट करना मान्य नहीं है। आप "not": {"type": "null"} निर्दिष्ट कर सकते हैं, लेकिन यह पहले से ही अनावश्यक होगा क्योंकि पहले "type": "string" पहले से ही इसका तात्पर्य है।

jruizaranguren से स्वीकृत उत्तर काम करता है क्योंकि यह स्ट्रिंग"null" की अनुमति नहीं देता है। यह मूल भ्रम को संबोधित नहीं करता है कि null"null" जैसा नहीं है।

2

आप "प्रकार" के बजाय "enum" कीवर्ड का उपयोग कर सकते हैं। "शून्य" मान्य जेसन और जेसन-स्कीमा प्रकार नहीं है।

अतिरिक्त विवरण और अधिकतमप्रोपर्टी आंकड़े विवरण के भीतर बेकार हैं।

{ 
    "$schema" : "http://json-schema.org/draft-04/schema#", 
    "id" : "http://jsonschema.net#", 
    "type" : "object", 
    "additionalProperties" : false, 
    "maxProperties" : 1, 
    "properties" : { 
     "stats" : { 
      "id" : "http://jsonschema.net/stats#", 
      "type" : "string", 
      "maxLength" : 5, 
      "minLength" : 2 
      "not" : { 
       "enum" : ["null"] 
      } 

     } 
    }, 
    "required" : [ 
     "stats" 
    ] 
} 
+0

धन्यवाद jruizaranguren। सही काम करता है – Manu

3

सबसे पहले, शून्य एक स्ट्रिंग नहीं है। तो अपने schema--

"stats": { 
    "id": "http://jsonschema.net/stats#", 
    "type": "string", 
    "maxLength": 5, 
    "minLength": 2, 
    "additionalProperties": false, 
    "maxProperties": 1, 
    "not": {"type": null} 
} 

में नीचे का उपयोग कर, below--

{ "stats": "null" } की तरह कुछ कोशिश लेकिन उदाहरण में आपने उल्लेख किया है स्निपेट

तो अगर आप वास्तव में अशक्त चाहता था अनुमति नहीं दी जानी करने के लिए आपकी फ़ाइल में, तो आपकी उदाहरण फ़ाइल { "stats": null } की तरह दिखनी चाहिए जो मैंने प्रदान की है।

संबंधित मुद्दे