LonghornPHP 2026

simdjson_is_valid

(PECL simdjson >= 2.0.0)

simdjson_is_validПроверяет, корректна ли JSON-строка

Описание

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

Функция принимает строку в формате 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() помогают определить точную природу ошибки.

Смотрите также

  • json_encode() - Возвращает JSON-представление данных
  • json_decode() - Декодирует строку JSON

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы

AltStyle によって変換されたページ (->オリジナル) /