验证python中json模式中的未知属性名称

问题描述

schema = { "type" : "object","properties" : 
                   { "price" : {"type" : "array","items" : { "type" : "string","pattern": "^[A-Za-z0-9_]*$" }},},}

from jsonschema import validate
validate(instance={"price" : ["test","34"]},schema=schema)

以上代码验证了属性 price 包含不带间隔的字符串数组项。 即使我们不知道传入的属性名称,也可以验证该属性吗?

可能如下所示

schema = { "type" : "object","properties" : 
                   {  "type" : "array","pattern": "^[A-Za-z0-9_]*$" },schema=schema)
validate(instance={"marks" : ["test",schema=schema)

解决方法

是的,您可以使用additionalProperties提供一个通用模式,无论属性名称是什么,所有对象都必须通过该模式。

您还可以使用模式来约束属性名称-请参见https://json-schema.org/understanding-json-schema/reference/object.html上的“ patternProperties”。