Python 如何限制jsonschema中未声明的additions字段

Python 如何限制jsonschema中未声明的additions字段,python,json,jsonschema,Python,Json,Jsonschema,在json对象中,某些字段不是我需要的,但它们仍然通过我的验证,如下所示 jsonchema: my_模式={ “类型”:“数组”, “迷你项目”:1, “项目”:{ “类型”:“对象”, “必需”:[“端点”、“桶”], “财产”:{ “端点”:{ “类型”:“字符串” }, “桶”:{ “类型”:“字符串”, “最小长度”:1 }, “dir”:{ “类型”:“字符串”, “最小长度”:1 } } } } JSON: one = [{ "endpoint": &

在json对象中,某些字段不是我需要的,但它们仍然通过我的验证,如下所示

jsonchema:

my_模式={
“类型”:“数组”,
“迷你项目”:1,
“项目”:{
“类型”:“对象”,
“必需”:[“端点”、“桶”],
“财产”:{
“端点”:{
“类型”:“字符串”
},
“桶”:{
“类型”:“字符串”,
“最小长度”:1
},
“dir”:{
“类型”:“字符串”,
“最小长度”:1
}
}
}
}
JSON:

one = [{
    "endpoint": "",
    "bucket": "2020-10-27 16:20:24",
    "dir": "/tmp"
}]
two = [{
    "endpoint": "",
    "bucket": "2020-10-27 16:20:24",
    "dir": "/tmp",
    "id": "leaking"
}]
我在python2.7中运行了以下代码:

import jsonschema
from jsonschema import validate

print(jsonschema.__version__)
validate(instance=one, schema=my_schema)
validate(instance=two, schema=my_schema)  # how can i let this line raise a Exception?

print("validated one, two.")
输出:

3.2.0
passed one, two.  # this not my intention

前面的json
两个
有一个字段“
id
”需要排除,任何未在“
属性
”中声明的字段都以相同的方式处理。

使用
附加属性

additionalProperties关键字用于控制额外内容的处理,即名称未列在properties关键字中的属性。默认情况下,允许任何其他属性

additionalProperties关键字可以是布尔值或对象。如果additionalProperties是布尔值并设置为false,则不允许使用其他属性

您的架构如下所示:

{
    "type": "array",
    "minItems": 1,
    "items": {
        "type": "object",
        "required": ["endpoint", "bucket"],
        "properties": {
            "endpoint": {
                "type": "string"
            },
            "bucket": {
                "type": "string",
                "minLength": 1
            },
            "dir": {
                "type": "string",
                "minLength": 1
            }
        },
        "additionalProperties": false
    }
}

使用
附加属性

additionalProperties关键字用于控制额外内容的处理,即名称未列在properties关键字中的属性。默认情况下,允许任何其他属性

additionalProperties关键字可以是布尔值或对象。如果additionalProperties是布尔值并设置为false,则不允许使用其他属性

您的架构如下所示:

{
    "type": "array",
    "minItems": 1,
    "items": {
        "type": "object",
        "required": ["endpoint", "bucket"],
        "properties": {
            "endpoint": {
                "type": "string"
            },
            "bucket": {
                "type": "string",
                "minLength": 1
            },
            "dir": {
                "type": "string",
                "minLength": 1
            }
        },
        "additionalProperties": false
    }
}

预期输出是什么?无任何输出(引发异常)。预期输出是什么?无任何输出(引发异常)。