Python 如何限制jsonschema中未声明的additions字段
在json对象中,某些字段不是我需要的,但它们仍然通过我的验证,如下所示 jsonchema:Python 如何限制jsonschema中未声明的additions字段,python,json,jsonschema,Python,Json,Jsonschema,在json对象中,某些字段不是我需要的,但它们仍然通过我的验证,如下所示 jsonchema: my_模式={ “类型”:“数组”, “迷你项目”:1, “项目”:{ “类型”:“对象”, “必需”:[“端点”、“桶”], “财产”:{ “端点”:{ “类型”:“字符串” }, “桶”:{ “类型”:“字符串”, “最小长度”:1 }, “dir”:{ “类型”:“字符串”, “最小长度”:1 } } } } JSON: one = [{ "endpoint": &
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
}
}
预期输出是什么?无任何输出(引发异常)。预期输出是什么?无任何输出(引发异常)。