0Pricing
PHP Academy · Урок

Кодирование и декодирование 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 — локальная установка не требуется.

Все уроки этого курса

  1. Кодирование и декодирование JSON
  2. HTTP-запросы с помощью cURL
  3. Обработка ответов API и ошибок
  4. Создание простого клиента API
← Назад к PHP Academy