Json encode: примеры (PHP)
json_encode(mixed $value, int $flags = 0, int $depth = 512): string|falseФункция json_encode преобразует значение PHP в строку JSON. Она используется при передаче данных между клиентом и сервером, сохранении структур данных или обмене информацией между системами.
value (обязательный) - значение для кодирования. Может быть любого типа, кроме ресурса.
flags (опционально) - битовая маска констант для изменения поведения кодирования. По умолчанию 0.
depth (опционально) - максимальная глубина рекурсии при кодировании. По умолчанию 512.
JSON_HEX_TAG - преобразует < и > в \u003C и \u003E.
JSON_HEX_AMP - преобразует & в \u0026.
JSON_HEX_APOS - преобразует ' в \u0027.
JSON_HEX_QUOT - преобразует " в \u0022.
JSON_FORCE_OBJECT - кодирует массив как объект.
JSON_NUMERIC_CHECK - преобразует строки с числами в числа.
JSON_PRETTY_PRINT - форматирует JSON с отступами.
JSON_UNESCAPED_SLASHES - не экранирует /.
JSON_UNESCAPED_UNICODE - не экранирует символы Unicode.
JSON_THROW_ON_ERROR - выбрасывает исключение при ошибке.
$data = ['name' => 'Иван', 'age' => 30];
echo json_encode($data);{"name":"\u0418\u0432\u0430\u043d","age":30}echo json_encode($data, JSON_UNESCAPED_UNICODE);{"name":"Иван","age":30}echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);{
"name": "Иван",
"age": 30
}$array = ['яблоко', 'банан'];
echo json_encode($array, JSON_FORCE_OBJECT);{"0":"\u044f\u0431\u043b\u043e\u043a\u043e","1":"\u0431\u0430\u043d\u0430\u043d"}$data = ['price' => '100', 'discount' => '25.5'];
echo json_encode($data, JSON_NUMERIC_CHECK);{"price":100,"discount":25.5}Обратная функция для декодирования строки JSON в структуры PHP. Используется, когда требуется преобразовать полученные JSON-данные обратно в объекты или массивы.
Функции для преобразования сложных структур PHP в строку и обратно. В отличие от JSON, результат специфичен для PHP и обычно не используется для межъязыкового обмена.
Выводит или возвращает строковое представление переменной в виде валидного PHP-кода. Подходит для сохранения данных, которые будут позже включены в PHP-скрипт.
Json encode в Javascript
const obj = {name: 'Иван', age: 30};
const json = JSON.stringify(obj);
console.log(json);{"name":"Иван","age":30}Метод JSON.stringify выполняет аналогичное преобразование. Поддерживает параметр replacer и space для форматирования.
Json encode в Python
import json
data = {'name': 'Иван', 'age': 30}
json_str = json.dumps(data, ensure_ascii=False)
print(json_str){"name": "Иван", "age": 30}Функция json.dumps модуля json обеспечивает сходную функциональность. Параметр ensure_ascii=False аналогичен JSON_UNESCAPED_UNICODE.
Json encode в MySQL
SELECT JSON_OBJECT('name', 'Иван', 'age', 30);{"name": "Иван", "age": 30}Функция JSON_OBJECT создает JSON-объект из пар ключ-значение. В MySQL есть множество других JSON-функций для работы с JSON-данными непосредственно в запросах.
$resource = fopen('test.txt', 'r');
echo json_encode($resource);null
Ресурсы не могут быть закодированы в JSON, функция возвращает null.
$arr = [1, 2, 3];
$arr[] = &$arr;
echo json_encode($arr);false
При наличии циклических ссылок функция возвращает false.
$data = [[['глубина']]];
echo json_encode($data, 0, 2);false
Если глубина структуры превышает указанный параметр depth, кодирование завершается неудачей.
$str = "тест" . chr(200);
echo json_encode($str);false
При наличии некорректных UTF-8 последовательностей функция может вернуть false.
Добавлены константы JSON_THROW_ON_ERROR, JSON_INVALID_UTF8_IGNORE, JSON_INVALID_UTF8_SUBSTITUTE.
Добавлена константа JSON_INVALID_UTF8_IGNORE.
Добавлена константа JSON_UNESCAPED_LINE_TERMINATORS.
Параметр depth по умолчанию изменен с 512 на 2147483647. Константа JSON_THROW_ON_ERROR теперь может использоваться для генерации исключений при ошибках.
class User {
private $name = 'Мария';
public $age = 25;
public function getName() {
return $this->name;
}
}
$user = new User();
echo json_encode($user);{"age":25}Кодируются только публичные свойства объекта.
class Product implements JsonSerializable {
private $id = 100;
private $name = 'Товар';
public function jsonSerialize() {
return ['id' => $this->id, 'title' => $this->name];
}
}
echo json_encode(new Product());{"id":100,"title":"Товар"}Интерфейс позволяет контролировать данные при сериализации в JSON.
try {
$data = ["\x80"];
echo json_encode($data, JSON_THROW_ON_ERROR);
} catch (JsonException $e) {
echo 'Ошибка: ' . $e->getMessage();
}Ошибка: Malformed UTF-8 characters, possibly incorrectly encoded
$data = ['tag' => '', 'path' => '/root/file', 'price' => '99.9'];
echo json_encode($data,
JSON_HEX_TAG | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT
);{
"tag": "\u003Cdiv\u003E",
"path": "/root/file",
"price": 99.9
}Кодирование многомерных структурПример php$company = [
'name' => 'Компания',
'departments' => [
['title' => 'Отдел продаж', 'employees' => 5],
['title' => 'Разработка', 'employees' => 12]
],
'tags' => ['IT', 'service']
];
echo json_encode($company, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
{
"name": "Компания",
"departments": [
{
"title": "Отдел продаж",
"employees": 5
},
{
"title": "Разработка",
"employees": 12
}
],
"tags": [
"IT",
"service"
]
}
PHP json_encode function comments
EnJson encode Returns the JSON representation of a value