simdjson_is_valid
(PECL simdjson >= 2.0.0)
simdjson_is_valid — Check if a JSON string is valid
説明
Takes a JSON encoded string and returns true if it is valid.
パラメータ
json
-
The
json
string being validated.This function only works with UTF-8 encoded strings.
This function validates inputs which json_decode() can decode, provided that they are less than 4 GiB long.
depth
-
Maximum nesting depth of the structure being validated. The value must be greater than
0
, and less than or equal to2147483647
. Callers should use reasonably small values, because larger depths require more buffer space and will increase the recursion depth, unlike the current json_decode() implementation.
エラー / 例外
If json
is longer than 4 GiB, a SimdJsonException is thrown as of PECL simdjson 2.1.0,
while previously, a RuntimeException was thrown.
If depth
is outside the allowed range,
a SimdJsonValueError is thrown as of PECL simdjson 3.0.0,
while previously, an error of level E_WARNING
was raised.
例
例1 simdjson_decode() examples
<?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
errors
<?php
// Encode some data with a maximum depth of 4
// (array -> array -> array -> string)
$json = json_encode(
[
1 => [
'English' => [
'One',
'January'
],
'French' => [
'Une',
'Janvier'
]
]
]
);
// Show the errors for different depths.
var_dump(simdjson_is_valid($json, 4));
var_dump(simdjson_is_valid($json, 3));
?>
上の例の出力は以下となります。
bool(true) bool(false)
注意
注意:
The JSON spec is not JavaScript, but a subset of JavaScript.
注意:
In the event of a failure to decode, a SimdJsonException is thrown and SimdJsonException::getCode() and SimdJsonException::getMessage() can be used to determine the exact nature of the error.