【问题标题】:Validate data from JSON having Boolean(true,false) not ("true","false"). And string ("12345") not (12345)验证来自 JSON 的数据具有 Boolean(true,false) 而不是 ("true","false")。而字符串 ("12345") 不是 (12345)
【发布时间】:2021-02-16 20:17:23
【问题描述】:

需要验证数据表单 JSON 文件。 示例 JSON: 预计

{
   id => "12345",
   flag=> true
}

如果文件包含如下数据,我需要抛出错误

{
   id => 12345,
   flag=> "true"
}

我发现此链接用于验证字符串 here

但如果有任何其他解决方案,它会对我有所帮助。 TIA

【问题讨论】:

    标签: json perl


    【解决方案1】:

    $val 是字符串吗?

    链接的答案无法帮助您区分 "12345"12345。要检查一个值是否存储为字符串,您可以使用

    use B qw( svref_2object SVf_POK );
    
    svref_2object(\$val)->FLAGS & SVf_POK
       or die("Not a string\n");
    

    这应该适用于您的 JSON 解析器中的值,但如果您可以期待双变量、具有重载的对象或神奇的标量,它就不起作用了。


    $val 是布尔值吗?

    最流行的 JSON 解析器使用特殊对象在 JSON 中表示 truefalse

    使用 Cpanel::JSON::XS,您可以使用

    Cpanel::JSON::XS::is_bool($val)
       or die("Not a boolean\n");
    

    JSON::XS 和 JSON::PP 也提供了一些检查方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-23
      • 2014-04-24
      相关资源
      最近更新 更多