Перейти к основному содержимому

Язык, на котором говорят API

API обмениваются данными в виде JSON — текста вида {"id": 1, "name": "Ana"}. PHP переводит в обе стороны двумя встроенными функциями: json_encode превращает значение в текст JSON, json_decode превращает текст JSON обратно в данные PHP.

Ассоциативные массивы — естественный носитель: ключи массива становятся ключами JSON, точно как написаны. Передача true вторым аргументом json_decode просит вернуть массивы (а не объекты) — примеры здесь всегда так и делают.


От массива к JSON

json_encode выдаёт компактный JSON для машин; флаг JSON_PRETTY_PRINT выдаёт читаемый JSON для людей и журналов. Выбрасывать ли пустые поля — решать вам: отфильтруйте их из массива до кодирования.

Кодирование: компактное и читаемое

У Ana нет адреса email, и фильтр полностью убирает пустое поле из её JSON. Полная запись Ben печатается с отступами.

Prompt
Напишите PHP-скрипт, который собирает пользователя в виде ассоциативного массива, отфильтровывает его пустые поля и компактно кодирует его через json_encode, затем кодирует полного пользователя с флагом JSON_PRETTY_PRINT и печатает оба результата в формате JSON.
Вывод: PHP-скрипт

От JSON к данным

json_decode разбирает JSON в массивы. Неизвестные ключи JSON не отбрасываются — они едут дальше как лишние элементы, которые ваш код вправе игнорировать; отсутствующие ключи просто отсутствуют, поэтому читайте их через ?? со значением по умолчанию. Некорректный JSON возвращает null, а json_last_error_msg() сообщает причину — всегда проверяйте, прежде чем доверять результату.

Декодирование и лишний ключ

JSON несёт ключ extra, которого код не запрашивал, — ошибки нет, он просто появляется в разобранном массиве, как показывает список ключей. Испорченный же JSON возвращает null с настоящим сообщением об ошибке.

Prompt
Напишите PHP-скрипт, который декодирует через json_decode строку JSON с лишним неизвестным ключом, печатая id, name и полный список ключей, а затем пытается декодировать испорченный JSON и печатает сообщение из json_last_error_msg.
Вывод: PHP-скрипт

Вложенные данные

Реальные данные API вложенные: заказ несёт своего пользователя и список товаров. Массивы внутри массивов отображаются в JSON автоматически — массив с ключами становится объектом JSON, список становится массивом JSON — никакой особой обработки не нужно.

Заказ с пользователем внутри

Вложенный массив user становится вложенным объектом JSON, список items становится массивом JSON — форма данных PHP и есть форма JSON.

Prompt
Напишите PHP-скрипт с заказом в виде ассоциативного массива, содержащего id, список названий товаров и вложенный массив user. Закодируйте его через json_encode с JSON_PRETTY_PRINT и напечатайте, чтобы показать вложенные объекты и массивы.
Вывод: PHP-скрипт