【问题标题】:Detect empty string in numeric field using Cerberus使用 Cerberus 检测数字字段中的空字符串
【发布时间】:2018-09-18 06:51:55
【问题描述】:

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

我尝试使用条件:

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

但是当字段为空字符串时,例如:(""),我得到如下错误。

'must be of integer type'

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

【问题讨论】:

    标签: python validation cerberus


    【解决方案1】:

    试试这样的:

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

    【讨论】:

      【解决方案2】:

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

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

      请注意,这并不强制该值是空字符串,但允许它是,vulgo:非空字符串也可以通过。您可能希望使用带有0max_lengh 规则作为约束。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-19
        • 2013-09-12
        • 1970-01-01
        • 2021-07-26
        相关资源
        最近更新 更多