← Назад к вопросам

Что такое JSON и как с ним работать в PHP?

2.7 Senior🔥 151 комментариев
#PHP Core

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI7 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое JSON

JSON (JavaScript Object Notation) — это легкий, текстовый формат для передачи структурированных данных. Он представляет собой независимый от языка способ описания объектов, массивов, чисел, строк, логических значений (true/false) и null. JSON широко используется в веб-разработке для обмена данными между клиентом и сервером (например, в REST API), конфигурационных файлов и сериализации данных.

Основные преимущества JSON:

  • Читаемость для человека (в отличие от XML или бинарных форматов).
  • Простота парсинга для компьютера.
  • Малый размер данных благодаря отсутствию тегов и мета-информации.
  • Поддержка всеми современными языками, включая PHP.

Пример JSON-объекта:

{
  "user": {
    "id": 42,
    "name": "Иван Петров",
    "email": "ivan@example.com",
    "active": true,
    "roles": ["admin", "editor"]
  }
}

Работа с JSON в PHP

PHP предоставляет две ключевые функции для работы с JSON: json_encode() и json_decode(). Они позволяют легко преобразовывать PHP-структуры в JSON и обратно.

1. Преобразование PHP-данных в JSON (json_encode())

Функция json_encode() преобразует PHP-переменную (массив, объект) в JSON-строку.

$userData = [
    'id' => 42,
    'name' => 'Иван Петров',
    'email' => 'ivan@example.com',
    'active' => true,
    'roles' => ['admin', 'editor']
];

$jsonString = json_encode($userData);
echo $jsonString;
// Вывод: {"id":42,"name":"Иван Петров","email":"ivan@example.com","active":true,"roles":["admin","editor"]}

Важные параметры json_encode():

  • JSON_PRETTY_PRINT — добавляет отступы и новые строки для красивого форматирования (удобно для чтения и логов).
  • JSON_UNESCAPED_UNICODE — сохраняет Unicode-символы (например, кириллицу) без преобразования в \uXXXX, что уменьшает размер строки.
  • JSON_NUMERIC_CHECK — автоматически преобразует числовые строки в числа в JSON.

Пример с параметрами:

$jsonPretty = json_encode($userData, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
echo $jsonPretty;

2. Преобразование JSON в PHP-данные (json_decode())

Функция json_decode() преобразует JSON-строку в PHP-структуру. Второй параметр определяет тип результата:

  • false (или отсутствие) — возвращает объект (stdClass).
  • true — возвращает ассоциативный массив.
$jsonString = '{"id":42,"name":"Иван Петров","active":true}';

// Преобразование в объект
$userObject = json_decode($jsonString);
echo $userObject->name; // Иван Петров
echo $userObject->id;    // 42

// Преобразование в ассоциативный массив
$userArray = json_decode($jsonString, true);
echo $userArray['name']; // Иван Петров

3. Обработка ошибок

При работе с JSON важно проверять наличие ошибок парсинга или генерации. Для этого используются:

  • json_last_error() — возвращает код последней ошибки JSON.
  • json_last_error_msg() — возвращает человеко-читаемое сообщение ошибки.

Пример безопасного парсинга:

$jsonString = '{"invalid": json}'; // Невалидный JSON
$data = json_decode($jsonString);

if (json_last_error() !== JSON_ERROR_NONE) {
    echo 'Ошибка JSON: ' . json_last_error_msg();
    // Обработка ошибки, например, возвращение default-значений или исключение
} else {
    // Успешный парсинг, работаем с $data
}

4. Практическое применение в Backend

В контексте PHP Backend JSON чаще всего используется для:

  • REST API — отправка JSON-ответов и парсинг JSON-запросов.
  • Взаимодействие с фронтендом (JavaScript) через AJAX.
  • Конфигурационные файлы (например, config.json).
  • Сериализация данных для сохранения в базу или кеш.

Пример обработки API-запроса и ответа:

// Предположим, получаем JSON из тела POST-запроса
$inputJson = file_get_contents('php://input');
$requestData = json_decode($inputJson, true);

// Проверяем данные, выполняем бизнес-логику
$userId = $requestData['userId'] ?? null;
$user = getUserFromDatabase($userId);

// Формируем JSON-ответ
$response = [
    'success' => true,
    'data' => $user,
    'message' => 'Пользователь найден'
];

header('Content-Type: application/json');
echo json_encode($response, JSON_UNESCAPED_UNICODE);

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

Что такое JSON и как с ним работать в PHP? | PrepBro