Мне нужно проверить поле / ключ с помощью dict и list_of_dicts. Поэтому я использовал правило anyof в Цербере для решения этой проблемы.
Для справки: Python Цербер: проблема с проверкой различных схем с использованием правила 'anyof_schema'
Данные
data1 = {
"authors": {
"_anchor": "a",
"name": "a",
"link": "a"
}
}
data2 = {
"authors": [
{
"_anchor": "a",
"name": "a",
"link": "a"
},
{
"_anchor": "a",
"name": "a",
"affiliation": "a"
}
]
}
Код
fields = {"_anchor": {"type": "string"},
"name": {"type": "string"},
"link1": {"type": "string", "required": True},
"affiliation": {"type": "string", "required": False}}
schema = {"authors":{
"anyof":[
{"type": "dict",
"schema": fields
},
{"type": "list",
"schema": {"type": "dict", "schema":fields}
}
]
}
}
Проблема: данные1 успешно проверены, если присутствуют все поля, в противном случае возникнет ошибка, Но data2 проверяется успешно, если все поля присутствуют или нет.
Кто-нибудь подскажет, если я что-то здесь упустил?