4

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

我尝试使用条件:

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

但是当字段为空字符串时,例如:(“”),我收到以下错误。

'must be of integer type'

有没有一种使用基本验证规则的方法,因此它还能检测数字字段中的空字符串?我知道可以通过使用扩展验证函数来完成,但我暂时想避免使用该解决方案。

4

2 回答 2

1

尝试这样的事情:

{"anyof":[
   {"type":"string","allowed":[""]},
   {"anyof_type":["float","integer"]}
]},
于 2018-09-19T15:55:46.927 回答
1

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

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

请注意,这并不强制该值是空字符串,而是允许它是 vulgo:非空字符串也会通过。您可能希望改用max_lenghw/0作为约束的规则。

于 2018-09-23T16:06:49.980 回答