我有一个像这样的JSON Schema文件,其中包含几个故意的错误:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"description": "MWE for JSON Schema Validation",
"properties": {
"valid_prop": {
"type": ["string", "number"],
"description": "This can be either a string or a number."
},
"invalid_prop": {
// NOTE: "type:" here should have been "type" (without the colon)
"type:": ["string", "null"],
"description": "Note the extra colon in the name of the type property above"
}
},
// NOTE: Reference to a non-existent property
"required": ["valid_prop", "nonexistent_prop"]
}
我想编写一个可以找到这些错误的 Python 脚本(或者,更好的是,安装一个带有 PiP 的 CLI)。
我已经看到了这个答案,它建议执行以下操作(针对我的用例进行了修改):
import json
from jsonschema import Draft4Validator
with open('./my-schema.json') as schemaf:
schema = json.loads('\n'.join(schemaf.readlines()))
Draft4Validator.check_schema(my_schema)
print("OK!") # on invalid schema we don't get here
但上面的脚本没有检测到架构文件中的任何一个错误。我会怀疑它至少可以检测到属性中的额外冒号"type:"
。
我是否错误地使用了图书馆?如何编写检测此错误的验证脚本?