मैं जेएसओएन के लिए नया हूं और मुझे आश्चर्य नहीं होगा अगर मुझे वास्तव में कुछ आसान याद आया, हालांकि मैंने कोशिश की और यह पता लगाने में असफल रहा कि मैं अपने स्कीमा में वास्तव में क्या गलत कर रहा हूं और कुछ चीजों को गलत तरीके से क्यों मान्य कर रहा हूं। यह मेरी स्कीमा है:

apartment_schema = {
    "type": "object",
    "properties": {
        "Apartments": {"type": "object"},
        "properties": {"ap1": {"type": "object",
                                 "required": ["count", "ages"],
                                 "properties": {"count": {"type": "number"},
                                                "ages": {"type": "array", "items": {"type": "number"}}},
                                 "additionalProperties": False,
                                 },
                       "ap2": {"type": "object",
                                "required": ["count", "ages"],
                                "properties": {"count": {"type": "number"},
                                               "ages": {"type": "array", "items": {"type": "number"}}},
                                "additionalProperties": False,
                                },
                       "ap3": {"type": "object",
                                     "required": ["count", "ages"],
                                     "properties": {"count": {"type": "number"},
                                                    "ages": {"type": "array", "items": {"type": "number"}}},
                                     "additionalProperties": False,
                                     },
                       },
        "required": ["ap1", "ap2", "ap3"], 
        "additionalProperties": False,
            },
    "additionalProperties": False,
    "required": ["Apartments"]
}

मैं json.loads और फिर इस स्कीमा के विरुद्ध मान्य फ़ंक्शन का उपयोग करके एक स्ट्रिंग को सत्यापित करने का प्रयास कर रहा हूं, लेकिन जब मैं इसे आज़माता हूं, तो मुझे यह संदेश मिलता है:

jsonschema.exceptions.SchemaError: ['ap1', 'ap2', 'ap3'] is not of type 'object', 'boolean'

यहां बताया गया है कि मैं इसे कैसे सत्यापित करने का प्रयास करता हूं, और किसके विरुद्ध:

def validateJson(jsonData):
    try:
        jsonschema.validate(instance=jsonData, schema=apartment_schema)
    except jsonschema.exceptions.ValidationError:
        return False
    return True
print(validateJson(json.loads("{\"Apartments\": {\"ap1\": {\"count\": 1, \"ages\": [40]},\"ap3\": {\"ages\": [10,15]}}}"))

यह सत्यापन पास हो जाता है और मुझे त्रुटि संदेश नहीं मिलता है यदि मैं स्कीमा से केवल एक आवश्यक भाग को हटा देता हूं, भले ही इसे पास नहीं करना चाहिए, क्योंकि इसमें आवश्यक पैरामीटर (गिनती) में से एक गुम है। जब मैं अलग-अलग तार डालता हूं तो ऐसा लगता है कि अन्य "आवश्यक" फ़ील्ड में से कोई भी काम नहीं कर रहा है, भले ही वे कोई त्रुटि न उठाएं। मैं यहाँ गलत क्या कर रहा हूँ?

0
Kubik 9 फरवरी 2021, 19:05

1 उत्तर

सबसे बढ़िया उत्तर

आपके पास "अपार्टमेंट" गुण घोषणा के ठीक नीचे एक अतिरिक्त properties कीवर्ड है जो वहां नहीं होना चाहिए -- इसलिए उसके नीचे की सभी चीज़ों को गलत स्तर पर पार्स किया जा रहा है। मुझे लगता है कि आप चाहते हैं कि गुण "एपी 1", "एपी 2" और "एपी 3" डेटा में "अपार्टमेंट" के समान स्तर पर हों?

0
Ether 9 फरवरी 2021, 21:00
मैं वास्तव में चाहता था कि "अपार्टमेंट" अन्य एपी युक्त वस्तु हो। जिसमें मुझे समस्या मिली है। मैं एक बेवकूफ था और यह नहीं देखा कि "अपार्टमेंट" ऑब्जेक्ट बंद हो गया था, इसलिए इसके गुणों में अन्य सभी चीजों को गलत तरीके से पार्स किया गया था। धन्यवाद, मुझे नहीं लगता कि मैंने इसे अन्यथा देखा होता।
 – 
Kubik
11 फरवरी 2021, 18:42