Обнаружить пустую строку в числовом поле, используя Цербер
Я использую библиотеку python cerberus ( http://docs.python-cerberus.org/en/stable/) и хочу проверить, является ли поле JSON числом (целым числом) или пустой строкой.
Я пытался использовать условие:
{"empty": True, "type": "intenger"}
Но когда поле является пустой строкой, например: (""), я получаю следующую ошибку.
'must be of integer type'
Есть ли способ использовать основные правила проверки, чтобы он обнаруживал также пустую строку в числовом поле? Я знаю, что это можно сделать с помощью расширенных функций проверки, но я хочу пока избежать этого решения.
2 ответа
Попробуйте что-то вроде этого:
{"anyof":[
{"type":"string","allowed":[""]},
{"anyof_type":["float","integer"]}
]},
Я бы посоветовал не усложнять схемы. 1) Несколько типов могут быть объявлены для type
править. 2) empty
Правило применяется только к значительным значениям, поэтому оно игнорирует любое заданное целое число. Следовательно, это самые простые возможные правила, установленные для ваших ограничений:
{'type': ('integer', 'string'),
'empty': True}
Имейте в виду, что это не приводит к тому, что значение является пустой строкой, но допускает, что это будет vulgo: непустая строка также будет передаваться. Вы можете использовать max_lengh
Правило ж / 0
в качестве ограничения вместо.