使用Cerberus检测数字字段中的空字符串

时间:2018-09-18 06:51:56

标签: python validation cerberus

我正在使用python库cerberus(http://docs.python-cerberus.org/en/stable/),并且想检查JSON字段是数字(整数)还是空字符串。

我尝试使用以下条件:

address of slice 0x170460 
address of slice 0x183e78 
0x170460
Array 0th: 0x170460

但是当该字段为空字符串时,例如:(“”),则会出现以下错误。

slice

有没有一种使用基本验证规则的方式,以便它还能在数字字段中检测到空字符串?我知道可以通过使用扩展验证功能来完成,但是我现在想避免该解决方案。

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

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

答案 1 :(得分:1)

我建议不要使模式过于复杂。 1)可以为type规则声明多种类型。 2)empty规则仅适用于较大的值,因此它将忽略任何给定的整数。因此,这是为您的约束设置的最简单的规则:

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

请注意,这不会强制将值强制为空字符串,但可以将其强制为vulgo:也将传递非空字符串。您可能想使用带有max_lengh的{​​{1}}规则作为约束。