Кодирование и декодирование JSON
Преобразуйте массивы PHP в JSON и разбирайте ответы JSON с помощью json_encode/json_decode
«Кодирование и декодирование JSON» — бесплатный урок PHP Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 4 уроков всего.
Что такое JSON?
JSON (JavaScript Object Notation) — это лёгкий формат данных, используемый для обмена данными с API и хранения файлов конфигурации. В PHP есть встроенные функции для его кодирования и декодирования.
json_encode()
Преобразует значение PHP (массив, объект или скаляр) в строку JSON.
<?php
$data = ["name" => "Alice", "age" => 30, "active" => true];
$json = json_encode($data);
echo $json; // {"name":"Alice","age":30,"active":true}json_decode()
Разбирает строку JSON и возвращает значение PHP. По умолчанию возвращает объекты stdClass; передайте true вторым аргументом, чтобы получить ассоциативные массивы.
<?php
$json = '{"name":"Alice","age":30}';
$obj = json_decode($json); // stdClass
$arr = json_decode($json, true); // associative array
echo $arr["name"]; // "Alice"Форматирование JSON
Используйте флаг JSON_PRETTY_PRINT, чтобы отформатировать вывод для удобства чтения.
<?php
$json = json_encode(["a" => 1, "b" => 2], JSON_PRETTY_PRINT);
echo $json;
// {
// "a": 1,
// "b": 2
// }Полезные флаги json_encode
Распространённые флаги: JSON_UNESCAPED_UNICODE (сохраняет UTF-8 без изменений), JSON_UNESCAPED_SLASHES (не добавляет обратную косую черту перед /), JSON_THROW_ON_ERROR (вызывает исключение при сбое).
<?php
$json = json_encode(["url" => "https://example.com/path"],
JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);Обработка ошибок
Проверяйте json_last_error() после кодирования или декодирования либо используйте JSON_THROW_ON_ERROR, чтобы автоматически получать исключение.
<?php
try {
$data = json_decode($input, true, 512, JSON_THROW_ON_ERROR);
} catch (\JsonException $e) {
echo "Invalid JSON: ".$e->getMessage();
}Кодирование объектов
Объекты кодируются как объекты JSON. По умолчанию включаются только открытые свойства. Реализуйте JsonSerializable, чтобы управлять сериализацией.
<?php
class Point implements \JsonSerializable {
public function __construct(
private float $x, private float $y
) {}
public function jsonSerialize(): mixed {
return ["x" => $this->x, "y" => $this->y];
}
}
echo json_encode(new Point(1.0, 2.5)); // {"x":1,"y":2.5}Вложенные структуры
JSON поддерживает вложенность. Глубоко вложенные массивы PHP без проблем преобразуются во вложенные объекты и массивы JSON.
<?php
$order = [
"id" => 1,
"items" => [
["sku" => "A1", "qty" => 2],
["sku" => "B3", "qty" => 1],
],
];
echo json_encode($order, JSON_PRETTY_PRINT);Глубина декодирования
Третий параметр json_decode задаёт максимальную глубину рекурсии (по умолчанию — 512). Для очень глубоко вложенного JSON может потребоваться увеличить это ограничение.
JSON_NUMERIC_CHECK
Флаг JSON_NUMERIC_CHECK преобразует числовые строки в числа во время кодирования. Используйте его осторожно: он может повредить номера телефонов.
Потоковая обработка большого JSON
Для очень больших файлов JSON используйте библиотеку потокового разбора (например, halaxa/json-machine), а не загружайте весь файл с помощью json_decode.
Итоги
json_encode преобразует значения PHP в строки JSON. json_decode разбирает JSON. Для безопасной обработки ошибок используйте JSON_THROW_ON_ERROR.
Быстрая проверка
Как получить ассоциативный массив из json_decode?
Часто задаваемые вопросы
Урок «Кодирование и декодирование JSON» бесплатный?
Да — полный текст урока «Кодирование и декодирование JSON» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.
Чему я научусь в уроке «Кодирование и декодирование JSON»?
Преобразуйте массивы PHP в JSON и разбирайте ответы JSON с помощью json_encode/json_decode Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать PHP Academy?
Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Кодирование и декодирование JSON»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке PHP Academy?
Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Кодирование и декодирование JSON
- HTTP-запросы с помощью cURL
- Обработка ответов API и ошибок
- Создание простого клиента API