使用 Cerberus 检测数字字段中的空字符串
Detect empty string in numeric field using Cerberus
我正在使用 python 库 cerberus (http://docs.python-cerberus.org/en/stable/),我想检查 JSON 字段是数字(整数)还是空字符串。
我尝试使用条件:
{"empty": True, "type": "intenger"}
但是当字段为空字符串时,例如:(""),我得到以下错误。
'must be of integer type'
有没有一种方法可以使用基本验证规则,以便它也能检测到数字字段中的空字符串?我知道这可以通过使用扩展验证函数来完成,但我暂时想避免使用该解决方案。
尝试这样的事情:
{"anyof":[
{"type":"string","allowed":[""]},
{"anyof_type":["float","integer"]}
]},
我建议不要使模式过于复杂。 1) type
规则可以声明多个类型。 2) empty
规则只适用于相当大的值,所以它会忽略任何给定的整数。因此,这是为您的约束设置的最简单的可能规则:
{'type': ('integer', 'string'),
'empty': True}
请注意,这不会强制该值是一个空字符串,但允许它是,vulgo:非空字符串也会通过。您可能希望使用带 0
的 max_lengh
规则作为约束。
我正在使用 python 库 cerberus (http://docs.python-cerberus.org/en/stable/),我想检查 JSON 字段是数字(整数)还是空字符串。
我尝试使用条件:
{"empty": True, "type": "intenger"}
但是当字段为空字符串时,例如:(""),我得到以下错误。
'must be of integer type'
有没有一种方法可以使用基本验证规则,以便它也能检测到数字字段中的空字符串?我知道这可以通过使用扩展验证函数来完成,但我暂时想避免使用该解决方案。
尝试这样的事情:
{"anyof":[
{"type":"string","allowed":[""]},
{"anyof_type":["float","integer"]}
]},
我建议不要使模式过于复杂。 1) type
规则可以声明多个类型。 2) empty
规则只适用于相当大的值,所以它会忽略任何给定的整数。因此,这是为您的约束设置的最简单的可能规则:
{'type': ('integer', 'string'),
'empty': True}
请注意,这不会强制该值是一个空字符串,但允许它是,vulgo:非空字符串也会通过。您可能希望使用带 0
的 max_lengh
规则作为约束。