При использовании Python jsonschema возможно определить схемы и экземпляры, которые не могут быть выражены в действительном JSON.
>>> import jsonschema
>>> schema = {
... "type": "object",
... "properties": {"1": {}, 2:{}},
... "additionalProperties": False
... }
Теперь
>>> jsonschema.validate({"1": "spam", 2: "eggs"}, schema)
невызвать исключение, в то время как приведенный ниже код завершается ошибкой:
>>> jsonschema.validate({1: "spam"}, schema)
Traceback (most recent call last):
...
jsonschema.exceptions.ValidationError: Additional properties are not allowed (1 was unexpected)
Failed validating 'additionalProperties' in schema:
{'additionalProperties': False,
'properties': {2: {}, '1': {}},
'type': 'object'}
On instance:
{1: 'spam'}
Я немного запутался здесь: отображение Python {"1": "spam", 2: "eggs"}
не может быть сериализовано в допустимый объект JSON, и то же самое относится к schema
отображение выше.(В JSON объекты представляют собой отображение имени / значения, где имя должно быть строкой и не может быть целым или другим типом данных).
Является ли это предполагаемым поведением, то есть семантика jsonschema расширена, чтобы включить более общиетипы данных python или вышеприведенное использование schema
недопустимо и должно быть помечено как ошибка библиотекой jsonschema?Я прочитал документы , но не смог найти упоминания об этом.