Минимальный пример (python 3.x):
_required_fields = {
"id": {
"type": "integer",
"minimum": 1,
},
"name: {
"type": "string"
}
}
_optional_fields = {
"address": {
"type": "string"
}
}
my_schema = {
"type": "object",
"properties": {
**_required_fields ,
**_optional_fields
},
"required": [key for key in _required_fields ],
# "additionalProperties": ???
}
Схема должна убедиться, что все обязательные поля находятся в JSON (это прекрасно работает).И это должно ограничить дополнительные свойства теми, которые указаны в _optional_fields
dict.(где я застрял).
Если нет дополнительных свойств, просто установите additionalProperties
в False
.Тогда есть minProperties
и maxProperties
, чтобы ограничить количество дополнительных свойств.Но как ограничить их фиксированным выбором?
РЕДАКТИРОВАТЬ:
Благодаря @Relequestual.Решение было довольно простым.Я установил "additionalProperties": False
, и теперь он принимает только обязательные и необязательные поля и ничего вне них.