(PECL simdjson >= 2.0.0)
simdjson_is_valid — 检查 JSON 字符串是否有效
接受一个 JSON 编码字符串,如果它是有效的,则返回 true。
json
要验证的 json
string。
此函数仅适用于 UTF-8 编码的字符串。
此函数验证 json_decode() 可以解码的输入,前提是它们长度小于 4 GiB。
depth
要验证的结构的最大嵌套深度。该值必须大于 0
,且小于或等于 2147483647
。调用者应使用合理的小值,因为较大的深度需要更多的缓冲区空间,并且会增加递归深度,这与当前的 json_decode() 实现不同。
如果 json
长度超过 4 GiB,则从 PECL simdjson 2.1.0 开始抛出 SimdJsonException,而以前则抛出 RuntimeException。
如果 depth
超出允许范围,则从 PECL simdjson 3.0.0 开始抛出 SimdJsonValueError,而以前则会引发级别为 E_WARNING
的错误。
示例 #1 simdjson_decode() 示例
<?php
$json = '{"a":1,"b":2,"c":3}';
$invalidJson = '{"a":1,"b":2,"c":';
var_dump(simdjson_is_valid($json));
var_dump(simdjson_is_valid($invalidJson));
?>
上面的示例将输出
bool(true) bool(false)
示例 #2 depth
错误
<?php
// 使用最大深度为 4 编码一些数据
// (数组 -> 数组 -> 数组 -> 字符串)
$json = json_encode(
[
1 => [
'English' => [
'One',
'January'
],
'French' => [
'Une',
'Janvier'
]
]
]
);
// 显示不同深度的错误。
var_dump(simdjson_is_valid($json, 4));
var_dump(simdjson_is_valid($json, 3));
?>
上面的示例将输出
bool(true) bool(false)
注意:
JSON 规范不是 JavaScript,而是 JavaScript 的一个子集。
注意:
如果解码失败,将抛出 SimdJsonException,并且可以使用 SimdJsonException::getCode() 和 SimdJsonException::getMessage() 来确定错误的具体性质。