PHP 8.5.0 Beta 1 available for testing

simdjson_is_valid

(PECL simdjson >= 2.0.0)

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

Описание

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

Добавить

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

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