Опитвам се да потвърдя това, което мислех, че е проста JSON схема като конфигурационен файл за моето приложение на Python, това е списък от двойки ключ/стойност на заглавката, единственото усложнение е, че ако полето „Тип“ е зададено на „AnyValue“, тогава ключът за стойност не е необходим.
Ето каква е схемата:
{
"definitions":
{
'KeyEntry':
{
"properties":
{
'Type': {"type" : "string"},
'Key': {"type": "string"}
},
"required": ['Type', 'Key'],
"anyOf":
[
{
"if":
{
"properties": {'Type': {"const": 'ExactValue'}}
},
"then":
{
"properties":
{
'Value': {"type": "string"}
},
"required": ['Type', 'Key', 'Value'],
"additionalProperties": false
}
},
{
"if":
{
"properties": {'Type': {"const": 'AnyValue'}}
},
"then":
{
"required": ['Type', 'Key'],
"additionalProperties": false
}
}
]
}
},
"type": "object",
"properties":
{
'Keys':
{
"type": "array",
"items": {"$ref": "#/definitions/KeyEntry"}
}
},
"required": ['Keys']
}
Повечето от валидирането работи, освен ако добавя допълнителни стойности, въпреки че съм задал "additionalProperties": false в цялата схема.
Ето пример, при който се приемат допълнителни стойности:
{
"Keys": [
{
"Type": "AnyValue",
"Key": "Version",
"Y": "Yes",
"N": "No",
}
]
}
Моля, може ли някой да ми помогне да обясни къде съм сбъркал и как трябва да го коригирам, моля?