В этом уроке мы поговорим о работе с JSON в PHP. JSON (JavaScript Object Notation). Это популярный формат обмена данными, который широко используется в веб-разработке. Он легкий, читаемый и легко интегрируется с различными языками программирования, включая PHP. В этом уроке мы разберем, как преобразовывать данные в JSON и как декодировать JSON обратно в PHP-структуры. Также я подготовил для вас практические задачи и примеры кода, чтобы вы могли лучше усвоить материал.
JSON это текстовый формат, который используется для представления структурированных данных. Он основан на синтаксисе объектов JavaScript, но при этом является независимым от языка. JSON часто используется для передачи данных между сервером и клиентом, например, в API.
Пример JSON:
{ "name": "Максим", "age": 30, "is_developer": true, "skills": ["PHP", "JavaScript", "HTML"] }
Как видите, JSON поддерживает различные типы данных: строки, числа, булевы значения, массивы и объекты.
В PHP есть встроенная функция json_encode(), которая позволяет преобразовать PHP-массив или объект в JSON-строку. Давайте рассмотрим пример.
<?php
$data = [
"name" => "Максим",
"age" => 30,
"is_developer" => true,
"skills" => ["PHP", "JavaScript", "HTML"]
];
$jsonString = json_encode($data);
echo $jsonString;
?>
Результат выполнения:
{"name":"Максим","age":30,"is_developer":true,"skills":["PHP","JavaScript","HTML"]}
<?php
class User {
public $name = "Максим";
public $age = 30;
public $is_developer = true;
public $skills = ["PHP", "JavaScript", "HTML"];
}
$user = new User();
$jsonString = json_encode($user);
echo $jsonString;
?>
Результат выполнения:
{"name":"Максим","age":30,"is_developer":true,"skills":["PHP","JavaScript","HTML"]}
json_encode()Функция json_encode() принимает два необязательных параметра:
JSON_PRETTY_PRINT делает JSON-строку более читаемой.Пример с использованием JSON_PRETTY_PRINT:
<?php
$data = [
"name" => "Максим",
"age" => 30,
"is_developer" => true,
"skills" => ["PHP", "JavaScript", "HTML"]
];
$jsonString = json_encode($data, JSON_PRETTY_PRINT);
echo $jsonString;
?>
Результат выполнения:
{ "name": "Максим", "age": 30, "is_developer": true, "skills": [ "PHP", "JavaScript", "HTML" ] }
Чтобы преобразовать JSON-строку обратно в PHP-массив или объект, используется функция json_decode(). Давайте разберем, как это работает.
<?php
$jsonString = '{"name":"Максим","age":30,"is_developer":true,"skills":["PHP","JavaScript","HTML"]}';
$data = json_decode($jsonString, true); // Второй параметр true возвращает ассоциативный массив
print_r($data);
?>
Результат выполнения:
Array
(
[name] => Максим
[age] => 30
[is_developer] => 1
=> Array
(
[0] => PHP
[1] => JavaScript
[2] => HTML
)
)
Если не передавать второй параметр в json_decode(), то функция вернет объект:
<?php
$jsonString = '{"name":"Максим","age":30,"is_developer":true,"skills":["PHP","JavaScript","HTML"]}';
$data = json_decode($jsonString);
var_dump($data);
?>
Результат выполнения:
object(stdClass)#1 (4) {
["name"]=> string(6) "Максим"
["age"]=> int(30)
["is_developer"]=> bool(true)
["skills"]=> array(3) {
[0]=> string(3) "PHP"
[1]=> string(10) "JavaScript"
[2]=> string(4) "HTML"
}
}
Если JSON-строка некорректна, функция json_decode() вернет null. Чтобы проверить, была ли ошибка, используйте функцию json_last_error().
Пример:
<?php
$jsonString = '{"name":"Максим", "age":30,}'; // Некорректный JSON
$data = json_decode($jsonString);
if (json_last_error() === JSON_ERROR_NONE) {
echo "Данные успешно декодированы!";
} else {
echo "Ошибка при декодировании JSON: " . json_last_error_msg();
}
?>
Результат выполнения:
Ошибка при декодировании JSON: Syntax error
Чтобы закрепить материал, давайте решим несколько задач.
Создайте массив с информацией о книге (название, автор, год издания) и преобразуйте его в JSON-строку.
Решение:
<?php
$book = [
"title" => "PHP для начинающих",
"author" => "Максим Габов",
"year" => 2025
];
$jsonString = json_encode($book, JSON_PRETTY_PRINT);
echo $jsonString;
?>
Декодируйте JSON-строку {"city":"Москва","population":12655050} в массив и выведите значение ключа city.
Решение:
<?php
$jsonString = '{"city":"Москва","population":12655050}';
$data = json_decode($jsonString, true);
echo "Город: " . $data['city'];
?>
Напишите функцию, которая принимает JSON-строку и проверяет, является ли она корректной.
Решение:
<?php
function isJsonValid($jsonString) {
json_decode($jsonString);
return json_last_error() === JSON_ERROR_NONE;
}
$testJson = '{"name":"Максим","age":30}';
echo isJsonValid($testJson) ? "JSON корректен" : "JSON некорректен";
?>
Сегодня мы изучили, как работать с JSON в PHP, как преобразовывать данные в JSON с помощью json_encode() и декодировать JSON-строки с помощью json_decode().
Также мы рассмотрели, как обрабатывать ошибки и использовать
дополнительные параметры для настройки процесса кодирования и
декодирования.
Надеюсь, этот урок был полезен для вас. Если у вас остались вопросы, не стесняйтесь задавать их в комментариях. А если вы хотите изучить PHP более глубоко, рекомендую ознакомиться с полным курсом по PHP для начинающих: https://sovet-seo.ru/kurs_php.html.
Удачи в изучении PHP и до встречи в следующем уроке.