Python jsonschema中dependentSchemas未触发校验问题如何解决?
问题原因
- 传参变量名不匹配:你代码中定义的Schema变量名为
check_schema、待校验数据变量名为check_dict,但调用jsonschema.validate方法时传入的参数是dic_check和schema_check,变量名完全不匹配。如果你的运行代码确实是这样写的,传入的实际是未定义的变量,要么会直接抛变量不存在的错误,要么会因为你提前定义了其他同名的空/不匹配的schema和数据,导致校验逻辑没有按预期执行。 - 校验器版本不匹配:
dependentSchemas是JSON Schema Draft 2019-09版本才新增的关键字,如果你使用的jsonschema库默认校验器采用了更低版本的规范,会直接忽略dependentSchemas字段,导致对应的校验规则不生效。
解决方法
- 先修正传参的变量名,保证传入的参数和你定义的变量一一对应:
# 错误写法 # jsonschema.validate(dic_check, schema_check) # 正确写法 jsonschema.validate(check_dict, check_schema)
- 如果修正变量名后校验仍不生效,显式指定适配Draft 2020-12的校验器执行校验:
from jsonschema import Draft202012Validator Draft202012Validator(check_schema).validate(check_dict)
修改完成后重新运行,缺失billing_address字段的测试数据就会正常抛出校验错误。
内容的提问来源于stack exchange,提问作者SaBe
相关产品推荐
相关产品推荐

