我正在使用python 2.7 jsonschema validate方法来针对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"}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试针对此架构进行验证的响应json是
{
"Country": {
"State": {
"City": {
"lat": "PP_4001",
"long": "Invalid GlobalParameters"
},
"StateCode": "2017-06-16 18:15:14.442000",
"StateFlagColor": "400",
"StateCapital": "ERROR"
}
}
}
Run Code Online (Sandbox Code Playgroud)
用于根据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)
Run Code Online (Sandbox Code Playgroud)
如果在模式中看到,则元素的名称为StateFlagColor111,而json数据中的元素为stageFlagColor。我不确定如何进行此类验证不会引发异常。它总是通过。
然后,出于好奇,我创建了一个像这样的非常基本的jsonSchema,试图针对这个新模式验证与上述相同的josn数据。
schema1 = {
"type": "object",
"properties":{
"x1":{"type":"string"}
}
}
Run Code Online (Sandbox Code Playgroud)
jsondata也针对此简单模式进行了验证。
我不确定我在这里想念什么。我应该如何做这项工作?
默认情况下,架构将允许对象包含尚未明确指定的其他属性。您需要同时"additionalProperties": false在顶层和子对象(州和城市)中添加以禁用此功能。
另外,您的架构没有任何必需的属性。同样,如果您需要任何内容,则需要required适当级别的数组。
| 归档时间: |
|
| 查看次数: |
1075 次 |
| 最近记录: |