我使用python2.7jsonschemavalidate方法针对jsonschema验证响应json。在
我的jsonSchema是一本字典,如下所示:
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响应是
^{pr2}$根据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也根据这个简单的模式进行了验证。在
我不知道我在这里遗漏了什么。我该怎么做?在
默认情况下,模式将允许对象包含未显式指定的其他属性。您需要在顶层和子对象(State和City)中添加
"additionalProperties": false
以禁用此功能。在此外,您的架构没有任何必需的属性。同样,如果您需要任何东西,您需要在适当级别的
required
数组。在相关问题 更多 >
编程相关推荐