【发布时间】:2021-02-16 20:17:23
【问题描述】:
需要验证数据表单 JSON 文件。 示例 JSON: 预计
{
id => "12345",
flag=> true
}
如果文件包含如下数据,我需要抛出错误
{
id => 12345,
flag=> "true"
}
我发现此链接用于验证字符串 here
但如果有任何其他解决方案,它会对我有所帮助。 TIA
【问题讨论】:
需要验证数据表单 JSON 文件。 示例 JSON: 预计
{
id => "12345",
flag=> true
}
如果文件包含如下数据,我需要抛出错误
{
id => 12345,
flag=> "true"
}
我发现此链接用于验证字符串 here
但如果有任何其他解决方案,它会对我有所帮助。 TIA
【问题讨论】:
$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 中表示 true 和 false。
使用 Cpanel::JSON::XS,您可以使用
Cpanel::JSON::XS::is_bool($val)
or die("Not a boolean\n");
JSON::XS 和 JSON::PP 也提供了一些检查方法。
【讨论】: