Python jsonschema не помечает ошибки даты и времени - PullRequest
0 голосов
/ 10 октября 2018

У меня возникли проблемы с пониманием того, как проверять данные с помощью jsonschema, что стало известно, когда я начал пытаться проверять значения даты и времени.

Следующий код должен вызвать исключение ValidationError, но это не так.Это самый короткий пример, который я смог придумать.

def val(data, schema):
    try:
        jsonschema.validate(data, schema)
    except jsonschema.ValidationError as e:
        return e.args[0]

result = val('2008-09-0X22:47:31-07:00', {'format': 'date-time'})
print(result)

Результат равен None для любого строкового значения, хотя

val(42, {'type': 'string', 'format': 'date-time'})

вызывает исключение с "42не имеет типа 'строка' ".Это не происходит, если я опускаю элемент схемы 'type', и валидатор снова возвращает None.

Мне кажется, у меня есть некоторые фундаментальные недоразумения о том, как использовать пакет.

1 Ответ

0 голосов
/ 10 октября 2018

Как указано в документации по jsonschema:

По умолчанию проверка не выполняется [из format], но при необходимости проверку можно включить, подключивпроверяющий формат объекта в IValidator.

Затем показан пример того, как это сделать:

validate(
    "-12", {"format" : "hostname"}, format_checker=FormatChecker(),
)

Итак, все, что вам нужно сделать, это:

jsonschema.validate('2008-09-0X22:47:31-07:00', {'format': 'date-time'}, format_checker=jsonschema.FormatChecker())

Обратите внимание, что, как указано в нижней части страницы, формат date-time применяется только в том случае, если у вас также установлен пакет strict-rfc3339.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...