Обнаружить пустую строку в числовом поле, используя Цербер - PullRequest
0 голосов
/ 18 сентября 2018

Я использую библиотеку python cerberus (http://docs.python -cerberus.org / en / stable / ) и хочу проверить, является ли поле JSON числом (целым числом) или пустой строкой.

Я пытался использовать условие:

{"empty": True, "type": "intenger"}

Но когда поле является пустой строкой, например: (""), я получаю следующую ошибку.

'must be of integer type'

Есть ли способ использовать основные правила проверки, чтобы он обнаруживал также пустую строку в числовом поле? Я знаю, что это можно сделать с помощью расширенных функций проверки, но я пока хочу избежать этого решения.

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Я бы посоветовал не усложнять схемы. 1) Для правила type может быть объявлено несколько типов. 2) Правило empty применяется только к значимым значениям, поэтому оно игнорирует любое заданное целое число. Следовательно, это самые простые возможные правила, установленные для ваших ограничений:

{'type': ('integer', 'string'),
 'empty': True}

Имейте в виду, что это не приводит к тому, что значение является пустой строкой, но допускает его использование: vulgo: непустая строка также будет передаваться. Вместо этого вы можете использовать правило max_lengh с / 1007 * в качестве ограничения.

0 голосов
/ 19 сентября 2018

Попробуйте что-то вроде этого:

{"anyof":[
   {"type":"string","allowed":[""]},
   {"anyof_type":["float","integer"]}
]},
...