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。然后是 minPropertiesmaxProperties 来限制附加属性的数量。但是如何将这些限制为固定选择?

编辑:

感谢@Relequestual。解决方案非常简单。我设置了 "additionalProperties": False,现在它只接受必填和可选字段,除此之外不接受任何内容。

additionalPropertiesfalse 阻止任何尚未在 properties 中定义的属性。

它与 requiredmin/maxProperties

无关,也不与之互动