在 Cerberus (Python) 中,有没有一种方法可以创建允许字典中任何键名的模式?

In Cerberus (Python) is there a way to create a schema that allows any key name in a dictionary?

给定一个字典,其中顶级键可以是任何值,但这些键的值中有一个严格的模式:

{"rand_value": ["key1": "val1", "key2": "val2"], "another_rand_value": ["key1": "val1", "key2": "val2"]}

我可以创建一个 Cerberus 架构来执行此操作吗?

Cerberus 必须知道字段名称,这样它才能确定适用于它的验证规则,因此您不能完全按照您的要求进行操作。没有适用于整个文档的“顶级”规则,并且 Cerberus 不支持字段名称的通配符。

但是,您可以根据文档中存在的实际字段名称“即时”构建架构,然后对其进行验证。

v = cerberus.Validator()
document = {"rand_value": {"key1": "val1", "key2": "val2"}, 
            "another_rand_value": {"key1": "val1", "key2": "val2"}}
fieldrule = {"type": "dict", "keysrules": {"type": "string"}}   # etc
v.validate(document, {field: fieldrule for field in document})