我正在使用Python 2.7的jsonschema验证方法来验证响应的JSON是否符合JSON模式。
我的JSON模式是一个字典,如下所示:
schema = {
"type" : "object",
"properties" : {
"Country": {"type": "object",
"properties":{
"State" : { "type" : "object",
"properties": {
"city": {"type": "object",
"properties":{
"lat":{"type": "string"},
"long": {"type": "string"}
}
},
"StateCode": {"type": "string"},
"StateFlagColor111": {"type": "string"},
"StateCapital": {"type": "string"}
}
}
}
}
}
}
我尝试根据这个模式验证的响应JSON是
{
"Country": {
"State": {
"City": {
"lat": "PP_4001",
"long": "Invalid GlobalParameters"
},
"StateCode": "2017-06-16 18:15:14.442000",
"StateFlagColor": "400",
"StateCapital": "ERROR"
}
}
}
验证json数据与json模式的Python代码片段如下:
import jsonschema
from jsonschema import validate
try:
validate(responseDataJson, schema)
print 'good json'
except jsonschema.exceptions.ValidationError as ve:
print 'bad json' + str(ve)
如果您在模式中看到,元素的名称是StateFlagColor111,而JSON数据中的元素是stageFlagColor。我不确定为什么它不会因此验证而抛出异常。它总是通过。
然后,出于好奇,我创建了一个非常基本的jsonSchema,像这样尝试针对此新模式验证上述相同的josn数据。
schema1 = {
"type": "object",
"properties":{
"x1":{"type":"string"}
}
}
该简单模式也可用于验证jsondata。
我不确定我漏掉了什么。我应该如何使它工作?