10

我正在处理 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)

我的问题是双重的:

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

谢谢,

周杰伦

4

1 回答 1

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)
于 2012-01-22T13:16:51.267 回答