jsonschema:来自有限集合的可选元素
jsonschema: optional elements from limited collection
最小示例 (python 3.x):
_required_fields = {
"id": {
"type": "integer",
"minimum": 1,
},
"name: {
"type": "string"
}
}
_optional_fields = {
"address": {
"type": "string"
}
}
my_schema = {
"type": "object",
"properties": {
**_required_fields ,
**_optional_fields
},
"required": [key for key in _required_fields ],
# "additionalProperties": ???
}
架构应确保所有必填字段都在 JSON 中(工作正常)。并且它应该将附加属性限制为 _optional_fields
字典中的属性。 (我被困在哪里)。
如果没有可选属性,您只需将 additionalProperties
设置为 False
。然后是 minProperties
和 maxProperties
来限制附加属性的数量。但是如何将这些限制为固定选择?
编辑:
感谢@Relequestual。解决方案非常简单。我设置了 "additionalProperties": False
,现在它只接受必填和可选字段,除此之外不接受任何内容。
additionalProperties
到 false
阻止任何尚未在 properties
中定义的属性。
它与 required
或 min/maxProperties
无关,也不与之互动
最小示例 (python 3.x):
_required_fields = {
"id": {
"type": "integer",
"minimum": 1,
},
"name: {
"type": "string"
}
}
_optional_fields = {
"address": {
"type": "string"
}
}
my_schema = {
"type": "object",
"properties": {
**_required_fields ,
**_optional_fields
},
"required": [key for key in _required_fields ],
# "additionalProperties": ???
}
架构应确保所有必填字段都在 JSON 中(工作正常)。并且它应该将附加属性限制为 _optional_fields
字典中的属性。 (我被困在哪里)。
如果没有可选属性,您只需将 additionalProperties
设置为 False
。然后是 minProperties
和 maxProperties
来限制附加属性的数量。但是如何将这些限制为固定选择?
编辑:
感谢@Relequestual。解决方案非常简单。我设置了 "additionalProperties": False
,现在它只接受必填和可选字段,除此之外不接受任何内容。
additionalProperties
到 false
阻止任何尚未在 properties
中定义的属性。
它与 required
或 min/maxProperties