[英]Cerberus and validating a list containing dicts
我正在尝试验证以下文档。
document = {
'days': {
'Monday': [{
'address': 'my address',
'city': 'my town'
}],
'Tuesday': [{
'address': 'my address',
'city': 'my town'
}]
}
}
使用以下架构。
schema = {
'days': {
'type': 'dict',
'allowed': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],
'schema': {
'type': 'list',
'schema': {
'address': {
'type': 'string'
},
'city': {
'type': 'string', 'required': True
}
}
}
}
}
v = Validator(schema)
if not v.validate(document, schema):
raise Exception("Configuration file is not valid", v.errors)
我收到以下错误:{days: ['must be of dict type']}
我无法弄清楚如何验证列表中包含的字典。
你非常亲近。 您可以使用valuesrules
来表示“无论键是什么,这都是值的规则”。 然后,在列表中,您需要一个模式,说明该列表具有 dicts,然后是元素内部的模式。 可能有一种更简单的方法可以做到这一点,但这会传递您的文档。
schema = {
'days': {
'type': 'dict',
'allowed': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],
'valuesrules': {
'type': 'list',
'schema': {
'type': 'dict',
'schema': {
'address': {
'type': 'string'
},
'city': {
'type': 'string', 'required': True
}
}
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.