PHP 8.1.28 Released!

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

Строка (string) в формате json для проверки.

Функция работает только со строками в кодировке UTF-8.

Функция анализирует допустимые входные данные, которые функция json_decode() может декодировать, при условии, что их длина не превышает 4 Гб.

depth

Максимальная глубина вложенности декодируемой структуры. Значение должно быть больше 0 и меньше или равно 2147483647. Вызывающие команды должны использовать достаточно маленькие значения, поскольку большая глубина требуют больше места в буфере и увеличивают глубину рекурсии, в отличие от текущей реализации функции json_decode().

Возвращаемые значения

Возвращает true, если параметр json является корректной строкой JSON, в противном случае возвращает false.

Ошибки

Если параметр json больше 4 ГБ, то начиная с версии 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
// (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

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top