(PECL simdjson >= 2.0.0)
simdjson_is_valid — Проверяет, корректна ли JSON-строка
Функция принимает строку в формате JSON и возвращает значение true
, если формат данных корректен.
json
Строка (string) в формате json
для проверки.
Функция работает только со строками в кодировке UTF-8.
Функция анализирует входные данные, которые умеет декодировать функция json_decode(), при условии, что длина данных не превышает 4 ГиБ.
depth
Максимальная глубина вложенности декодируемой структуры.
Параметр принимает только значение, которое больше 0
и меньше или равно 2_147_483_647
.
Вызывающей стороне лучше указывать разумные маленькие значения,
поскольку большая глубина требует больше места в буфере и увеличивает глубину рекурсии,
в отличие от текущей реализации функции json_decode().
Функция возвращает значение true
, если в параметр json
передали корректную
JSON-строку, иначе возвращает значение false
.
Начиная с версии PECL simdjson 2.1.0 функция выбрасывает исключение SimdJsonException,
если в параметр json
передали значение больше 4 ГиБ;
раньше функция выбрасывала исключение RuntimeException.
Начиная с версии PECL simdjson 3.0.0 функция выбрасывает исключение SimdJsonValueError,
если значение параметра depth
выходит за пределы допустимого диапазона;
раньше функция выдавала ошибку уровня E_WARNING
.
Пример #1 Пример проверки корректности JSON-строки функцией 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
// (array -> array -> array -> string)
$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() помогают определить точную природу ошибки.