jsonschema: дополнительные элементы из ограниченной коллекции - PullRequest
0 голосов
/ 02 мая 2019

Минимальный пример (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 dict.(где я застрял).

Если нет дополнительных свойств, просто установите additionalProperties в False.Тогда есть minProperties и maxProperties, чтобы ограничить количество дополнительных свойств.Но как ограничить их фиксированным выбором?

РЕДАКТИРОВАТЬ:

Благодаря @Relequestual.Решение было довольно простым.Я установил "additionalProperties": False, и теперь он принимает только обязательные и необязательные поля и ничего вне них.

1 Ответ

1 голос
/ 02 мая 2019

additionalProperties до false предотвращает любые свойства, еще не определенные в properties.

Это не связано и не взаимодействует с required или min/maxProperties

...