假设有这个架构:
{
"type": "object",
"properties": {
"account": {
"type": "object",
"required": ["id"],
"properties": {
"id": {"type": "number"}
}
},
"name": {"type": "string"},
"trigger": {
"type": "object",
"required": ["type"],
"properties": {
"type": {"type": "string"}
}
},
"content": {
"type": "object",
"properties": {
"emails": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["fromEmail","subject"],
"properties": {
"fromEmail": {"type": "string", "format": "email"},
"subject": {"type": "string"}
}
}
}
}
}
}
}
我正在尝试使用jsonschema.Draft4Validator
来验证POST的JSON对象,以检查其有效性,但是我遇到了一些问题,尝试从返回的错误中获得更好的人类可读消息。
这是我如何进行验证:
from jsonschema import Draft4Validator
v = Draft4Validator(self.schema)
errors = sorted(v.iter_errors(autoresponder_workflow), key=lambda e: e.path)
if errors:
print(', '.join(
'%s %s %s' % (error.path.popleft(), error.path.pop(), error.message) for error in errors
))
错误信息如下:
content emails [] is too short, trigger type None is not of type u'string'
我试图创建一个更像是请在您的工作流中至少添加一个电子邮件," "请确保所有电子邮件都包含主题行等的错误消息。
author
,description
缺失,这个会起作用吗? - user5319825error_msg
来捕获它。但是,由于此阶段可能会有很多错误,我认为最好将错误消息返回给用户。我已经通过对validate()
进行微调来更新我的答案。 - Jerakin