使用Validator(或类似的东西)进行python数据结构验证

jay*_*y_t 10 python validation json jsonschema

我正在以json文档的形式处理数据输入.这些文档需要具有某种格式,如果它们不符合要求,则应忽略它们.我目前正在使用凌乱的'if thens'列表来检查json文档的格式.

我一直在尝试使用不同的python json-schema库,这可以正常工作,但我仍然可以使用模式中未描述的密钥提交文档,这对我来说没用.

虽然我期望它,但此示例不会生成异常:

#!/usr/bin/python

from jsonschema import Validator
checker = Validator()
schema = {
    "type" : "object",
    "properties" : {
        "source" : {
            "type" : "object",
            "properties" : {
                "name" : {"type" : "string" }
            }
        }
    }
}
data ={
   "source":{
      "name":"blah",
      "bad_key":"This data is not allowed according to the schema."
   }
}
checker.validate(data,schema)
Run Code Online (Sandbox Code Playgroud)

我的问题是双重的:

  • 我是否忽略了架构定义中的某些内容?
  • 如果没有,是否还有另一种轻量级方法来解决这个问题

谢谢,

松鸦

Rob*_*ers 9

添加"additionalProperties": False:

#!/usr/bin/python

from jsonschema import Validator
checker = Validator()
schema = {
    "type" : "object",
    "properties" : {
        "source" : {
            "type" : "object",
            "properties" : {
                "name" : {"type" : "string" }
            },
            "additionalProperties": False, # add this
        }
    }
}
data ={
   "source":{
      "name":"blah",
      "bad_key":"This data is not allowed according to the schema."
   }
}
checker.validate(data,schema)
Run Code Online (Sandbox Code Playgroud)