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() можуть бути використані визначення точної природи помилки.

Дивіться також