Функция json_encode()

Тренажер по PHP для пользователей с начальным уровнем подготовки.

Тренажер PHP

В этом уроке мы разберемся, как превращать данные из PHP в формат JSON. Это ключевой навык для любого веб-разработчика, который работает с API, создает веб-приложения или просто обменивается данными между сервером и клиентом. Мы начнем с самых основ: превратим простой массив в JSON-строку. Затем постепенно усложним задачи: научимся работать с ассоциативными массивами, объектами и использовать специальные флаги для форматирования вывода и правильной обработки символов, например, кириллицы. В заданиях нужно будет находить ошибки, собирать код из частей и предсказывать результат его выполнения. Это поможет вам на практике освоить функцию `json_encode()` и уверенно применять ее в своих проектах.

Список тем

Простое кодирование массива

id: 39205_task_json_1

Преобразуйте простой индексированный массив PHP в строку формата JSON. Заполните пропущенные части кода, чтобы выполнить кодирование и вывести результат на экран.

Заполните пропуски
<?php
$data = [10, 20, "hello"];

$json_string = input1S(input2S);

echo $json_string;
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Результат кодирования ассоциативного массива

id: 39205_task_json_2

Проанализируйте код и впишите в поле ответа, какую именно строку он выведет. Обратите внимание на то, как представляются ключи и значения разного типа в итоговом формате.

Что должно получиться?
<?php
$user = [
    'name' => 'Alex',
    'age' => 30,
    'is_active' => true
];

echo json_encode($user);
Сообщения
Проверить
Показать подсказку

Найдите ошибку в ключе массива

id: 39205_task_json_3

В коде допущена синтаксическая ошибка при объявлении ассоциативного массива. Из-за этого PHP выдаст предупреждение, а `json_encode` вернет не тот результат, который ожидается. Найдите и исправьте строку с ошибкой.

Найдите ошибку и исправьте
<?php
$product = [
    name => 'Laptop',
    'price' => 1200
];
echo json_encode($product);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Какой JSON будет сгенерирован?

id: 39205_task_json_4

Проанализируйте PHP-код, который кодирует вложенный массив. Выберите из предложенных вариантов тот, который в точности соответствует результату его выполнения.

Выберите правильный вариант ответа
<?php
$data = [
    'id' => 101,
    'published' => true,
    'tags' => ['php', 'json']
];

echo json_encode($data);
Сообщения
Проверить
Показать подсказку

Форматирование JSON для читабельности

id: 39205_task_json_5

Иногда для отладки или логов нужен форматированный, "красивый" JSON. Модифицируйте код, добавив второй аргумент в функцию `json_encode`, чтобы получить такой результат.

Заполните пропуски
<?php
$data = ['user' => 'Maria', 'status' => 'active', 'id' => 205];

// Добавьте флаг для форматирования
$json = json_encode($data, input1S);

// тег <pre> нужен для корректного отображения переносов строк в HTML
echo '<pre>' . htmlspecialchars($json) . '</pre>';
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Кодирование кириллицы без экранирования

id: 39205_task_json_6

Соберите PHP-скрипт, который кодирует массив с кириллическими символами в JSON, сохраняя их в читаемом виде, а не в виде `\uXXXX` последовательностей. Отбросьте лишние и неверные строки кода.

Перетяните в правильном порядке строки из одного блока в другой
<?php
$data = ['имя' => 'Иван', 'город' => 'Москва'];
echo json_encode($data);
$data = ('имя' => 'Иван');
echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Сопоставьте флаги и их назначение

id: 39205_task_json_7

Функция `json_encode` имеет множество флагов, которые управляют ее поведением. Сопоставьте каждый флаг из левой колонки с соответствующим ему описанием из правой.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
JSON_PRETTY_PRINT
JSON_UNESCAPED_UNICODE
JSON_FORCE_OBJECT
JSON_NUMERIC_CHECK
Не экранирует многобайтовые символы Unicode (например, кириллицу).
Преобразует неассоциативные массивы в объекты JSON (с числовыми ключами).
Форматирует вывод с отступами и переносами строк для удобства чтения.
Кодирует числовые строки как числа.
Сообщения
Проверить
Показать подсказку

Сборка кода для кодирования объекта

id: 39205_task_json_8

В PHP можно кодировать не только массивы, но и объекты. Используя элементы из "банка", соберите рабочий код для преобразования объекта `stdClass` в JSON-строку.

Нужно правильно расставить в пропуски предложенные варианты
<?php
$obj = new stdClass();
$obj->name = 'Book';
$obj->price = 15.50;

$json = input1S(input2S);

echo $json;
json_encode
$obj
json_decode
$json
new Object()
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Принудительное создание объекта

id: 39205_task_json_9

Что произойдет, если применить флаг `JSON_FORCE_OBJECT` к обычному индексированному массиву? Введите итоговую JSON-строку, которую выведет данный код.

Что должно получиться?
<?php
$items = ['apple', 'banana'];

echo json_encode($items, JSON_FORCE_OBJECT);
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру