simdjson_is_valid

(PECL simdjson >= 2.0.0)

simdjson_is_valid检查 JSON 字符串是否有效

描述

simdjson_is_valid(string $json = false, int $depth = 512): bool

接受一个 JSON 编码字符串,如果它是有效的,则返回 true。

参数

json

要验证的 json string

此函数仅适用于 UTF-8 编码的字符串。

此函数验证 json_decode() 可以解码的输入,前提是它们长度小于 4 GiB。

depth

要验证的结构的最大嵌套深度。该值必须大于 0,且小于或等于 2147483647。调用者应使用合理的小值,因为较大的深度需要更多的缓冲区空间,并且会增加递归深度,这与当前的 json_decode() 实现不同。

返回值

如果 json 是有效的 JSON 字符串,则返回 true,否则返回 false

错误/异常

如果 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() 来确定错误的具体性质。

参见

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top