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()
Дивіться також
- JsonSerializable
- json_decode() - Декодує рядок JSON
- json_last_error() - Повертає останню помилку
- serialize() - Генерує придатне для зберігання уявлення змінної