json_encode

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL json >= 1.2.0)

json_encode — Повертає JSON-подання даних

Опис

json_encode(mixed $value, int $flags = 0, int $depth = 512): string|false

Повертає рядок, що містить JSON-подання для зазначеного value. Якщо параметр масивом (array) або об'єктом (object), він буде рекурсивно серіалізований.

Якщо значення, що серіалізується, є об'єктом, то за замовчуванням будуть включені тільки публічно видимі властивості. Як альтернатива клас може реалізувати інтерфейс JsonSerializable для керування тим, як його значення серіалізуються в JSON.

На кодирование влияет параметрflagsи, кроме того, кодирование значений типа float зависит от значенияserialize_precision

Список параметрів

value

value - значення, яке буде закодовано. Можливо будь-якого типу, крім resource

Функція працює лише з кодуванням UTF-8.

Зауваження :

PHP реалізує надмножина JSON, який описаний у початковому » RFC 7159

flags

Бітова маска, що складається із значень JSON_FORCE_OBJECT JSON_HEX_QUOT JSON_HEX_TAG JSON_HEX_AMP JSON_HEX_APOS JSON_INVALID_UTF8_IGNORE JSON_INVALID_UTF8_SUBSTITUTE JSON_NUMERIC_CHECK JSON_PARTIAL_OUTPUT_ON_ERROR JSON_PRESERVE_ZERO_FRACTION JSON_PRETTY_PRINT JSON_UNESCAPED_LINE_TERMINATORS JSON_UNESCAPED_SLASHES JSON_UNESCAPED_UNICODE JSON_THROW_ON_ERROR. Сенс цих констант пояснюється на сторінці JSON-констант

depth

Встановлює максимальну глибину. Має бути більше нуля.

Значення, що повертаються

Повертає рядок (string), закодований JSON або **false**в случае возникновения ошибки.

список змін

ВерсияОпис
7.3.0Добавлена константа**JSON_THROW_ON_ERROR**для параметраflags
7.2.0Додані константи **JSON_INVALID_UTF8_IGNORE** і **JSON_INVALID_UTF8_SUBSTITUTE**для параметраflags
7.1.0Добавлена константа**JSON_UNESCAPED_LINE_TERMINATORS**для параметраflags
7.1.0При кодуванні чисел із плаваючою точкою (float) використовується serialize_precision замість precision

Приклади

Приклад #1 Приклад використання json_encode()****

Loading...

Результат виконання наведеного прикладу:

{"a":1,"b":2,"c":3,"d":4,"e":5}

Приклад #2 Приклад використання json_encode()** з опціями**

Loading...

Результат виконання наведеного прикладу:

Обычно: ["<foo>","'bar'","\"baz\"","&blong&","\u00e9"]
Теги: ["\u003Cfoo\u003E","'bar'","\"baz\"","&blong&","\u00e9"]
Апострофы: ["<foo>","\u0027bar\u0027","\"baz\"","&blong&","\u00e9"]
Кавычки: ["<foo>","'bar'","\u0022baz\u0022","&blong&","\u00e9"]
Амперсанды: ["<foo>","'bar'","\"baz\"","\u0026blong\u0026","\u00e9"]
Юникод: ["<foo>","'bar'","\"baz\"","&blong&","é"]
Все: ["\u003Cfoo\u003E","\u0027bar\u0027","\u0022baz\u0022","\u0026blong\u0026","é"]

Отображение пустого массива как массива: []
Отображение неассоциативного массива как объекта: {}

Отображение неассоциативного массива как массива: [[1,2,3]]
Отображение неассоциативного массива как объекта: {"0":{"0":1,"1":2,"2":3}}

Ассоциативный массив всегда отображается как объект: {"foo":"bar","baz":"long"}
Ассоциативный массив всегда отображается как объект: {"foo":"bar","baz":"long"}

Приклад #3 Приклад використання опції JSON_NUMERIC_CHECK

Loading...

Висновок наведеного прикладу буде схожим на:

Строки, содержащие числа преобразуются в числа
array(4) {
  [0]=>
  string(7) "+123123"
  [1]=>
  string(7) "-123123"
  [2]=>
  string(5) "1.2e3"
  [3]=>
  string(7) "0.00001"
}
string(28) "[123123,-123123,1200,1.0e-5]"
Строки, содержащие некорректно заданные числа
array(2) {
  [0]=>
  string(13) "+a33123456789"
  [1]=>
  string(4) "a123"
}
string(24) "["+a33123456789","a123"]"

Приклад #4 Приклад з послідовними індексами, що починаються з нуля, та непослідовними індексами масивів

Loading...

Результат виконання наведеного прикладу:

Последовательный массив
array(4) {
  [0]=>
  string(3) "foo"
  [1]=>
  string(3) "bar"
  [2]=>
  string(3) "baz"
  [3]=>
  string(5) "blong"
}
string(27) "["foo","bar","baz","blong"]"

Непоследовательный массив
array(4) {
  [1]=>
  string(3) "foo"
  [2]=>
  string(3) "bar"
  [3]=>
  string(3) "baz"
  [4]=>
  string(5) "blong"
}
string(43) "{"1":"foo","2":"bar","3":"baz","4":"blong"}"

Последовательный массив с одним удалённым индексом
array(3) {
  [0]=>
  string(3) "foo"
  [2]=>
  string(3) "baz"
  [3]=>
  string(5) "blong"
}
string(33) "{"0":"foo","2":"baz","3":"blong"}"

Приклад #5 Приклад использования опцииJSON_PRESERVE_ZERO_FRACTION****

Loading...

Результат виконання наведеного прикладу:

string(4) "12.0"
string(2) "12"

Примітки

Зауваження :

у разі виникнення помилки кодування можна використовувати json_last_error() визначення точної помилки.

Зауваження :

При кодуванні масиву у разі, якщо його індекси не є послідовними числами від нуля, всі індекси кодуються в рядкові ключі для кожної пари індекс-значення.

Зауваження :

Як і еталонний кодувальник JSON, json_encode() буде створювати JSON у вигляді простого значення (тобто не об'єкт і не масив), якщо йому передані типи string, int, float або bool як вхідне значення value. Більшість декодерів сприймають ці значення як правильний JSON, але деякі ні, тому що специфікація неоднозначна щодо цього.

Завжди перевіряйте, що ваш декодер JSON може правильно обробляти дані, які ви створюєте за допомогою json_encode()

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