我不确定我是否读错了jsonschema的文档,但是据我所知,此程序包应允许我使用jsonschema.validate()检查JSON对象是否符合指定的架构。以下代码不会告诉我"age"
应该是数字。
import json
import jsonschema
schema = '{"name":{"type":"string","required":true},"age":{"type":"number","required":true}}'
schema = json.loads(schema)
data = '{"name":"Foo","age":"Bar"}'
def json_validator(data):
try:
json.loads(data)
print("Valid Json")
return True
except ValueError as error:
print("Invalid JSON: %s" % error)
return False
def schema_validator(data, schema):
try:
jsonschema.validate(data, schema)
except jsonschema.exceptions.ValidationError as e:
print(e)
except jsonschema.exceptions.SchemaError as e:
print(e)
json_validator(data)
schema_validator(data, schema)
我错过了什么吗?还是应该这样做?
非常感谢您的帮助。
答案 0 :(得分:0)
您的架构不是有效的架构。您需要将它们声明为properties
,并且您错误地使用required
(除非您使用的是Draft-03,这在目前还不太可能)。这是您想要的架构。
{
"type": "object",
"properties": {
"name": { "type": "string" },
"age": { "type": "number" }
},
"required": ["name", "age"]
}