simdjson_decode
(PECL simdjson >= 2.0.0)
simdjson_decode — Декодує рядок JSON
Опис
simdjson_decode(string $json, bool $associative = false, int $depth = 512): mixed
Приймає рядок у кодуванні JSON і перетворює його на значення PHP. При цьому буде використано швидшу реалізацію Simultaneous Instruction, Multiple Data, ніж у функції json_decode()якщо це підтримується архітектурою комп'ютера.
Список параметрів
json
Декодований рядок (string) в json
формате.
Функція працює тільки з рядками кодування UTF-8.
Функція аналізує допустимі вхідні дані, які функція json_decode() може декодувати, за умови, що їхня довжина не перевищує 4 Гб.
associative
При значении**true
**, об'єкти JSON будуть повернуті як асоціативні масиви (array); при значенні false
, об'єкти JSON будуть повернуті як об'єкти (object).
depth
Максимальна глибина вкладеності структури, що декодується. Значення має бути більшим і менше чи одно 2147483647
. Команда, що викликає, повинна використовувати досить маленькі значення, оскільки велика глибина вимагають більше місця в буфері і збільшують глибину рекурсії, на відміну від поточної реалізації функції json_decode()
Значення, що повертаються
Повертає значення, закодоване у параметрі json
у відповідному типі PHP. Значення true
false
иnull
повертаються як true
**false
** і **null
**соответственно.
Помилки
Якщо параметр json
недійсний, то починаючи з версії PECL simdjson 2.1.0 викидається виняток SimdJsonException, тоді як раніше викидався виняток RuntimeException
Якщо параметр depth
знаходиться поза допустимим діапазоном, то починаючи з версії PECL simdjson 3.0.0 викидається виняток SimdJsonValueError, тоді як раніше видавалася помилка рівня E_WARNING
Приклади
Приклад #1 Приклади використання simdjson_decode()
Loading...
Результат виконання наведеного прикладу:
object(stdClass)#1 (3) {
["a"]=>
int(1)
["b"]=>
int(2)
["c"]=>
int(3)
}
array(3) {
["a"]=>
int(1)
["b"]=>
int(2)
["c"]=>
int(3)
}
Приклад #2 Доступ до неприпустимих властивостей об'єкта
Доступ до елементів об'єкта, що містять символи, не дозволені угодою PHP про іменування (наприклад, дефіс), може бути здійснений шляхом укладання імені елемента у фігурні дужки та апостроф.
Loading...
Приклад #3 Поширені помилки під час використання simdjson_decode()
Loading...
Приклад #4 Ошибкиdepth
Loading...
Результат виконання наведеного прикладу:
array(1) {
[1]=>
array(2) {
["English"]=>
array(2) {
[0]=>
string(3) "One"
[1]=>
string(7) "January"
}
["French"]=>
array(2) {
[0]=>
string(3) "Une"
[1]=>
string(7) "Janvier"
}
}
}
Попался: The JSON document was too deep (too many nested objects and arrays)
Приклад #5simdjson_decode()** великих цілих чисел**
Loading...
Результат виконання наведеного прикладу:
object(stdClass)#1 (1) {
["number"]=>
float(1.2345678901235E+19)
}
Примітки
Зауваження :
Специфікація JSON - це не JavaScript, а підмножина JavaScript.
Зауваження :
У разі виникнення помилки декодування викидається виняток SimdJsonException, аSimdJsonException::getCode() і SimdJsonException::getMessage() можуть бути використані визначення точної природи помилки.
Дивіться також
- json_encode() - Повертає JSON-подання даних
- json_decode() - Декодує рядок JSON