pythonjsonschema validate未按预期工作

2024-09-28 23:23:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用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也根据这个简单的模式进行了验证。在

我不知道我在这里遗漏了什么。我该怎么做?在


Tags: 数据importjsonstringobjectschematype模式
1条回答
网友
1楼 · 发布于 2024-09-28 23:23:18

默认情况下,模式将允许对象包含未显式指定的其他属性。您需要在顶层和子对象(State和City)中添加"additionalProperties": false以禁用此功能。在

此外,您的架构没有任何必需的属性。同样,如果您需要任何东西,您需要在适当级别的required数组。在

相关问题 更多 >