JSON расшифровывается как JavaScript Object Notation и является популярным форматом для хранения и обмена данными. Данные JSON можно легко преобразовать в массивы или объекты PHP и обратно с помощью встроенных функций. В этом сообщении блога мы узнаем, как создавать и анализировать данные JSON с помощью PHP, используя несколько простых примеров.
Создание данных JSON с помощью PHP
Чтобы создать данные JSON из значения PHP, мы можем использовать функцию json_encode()
. Эта функция принимает значение PHP в качестве аргумента и возвращает строку в кодировке JSON. JSON может кодировать различные типы значений, такие как строки, числа, логические значения, пустые значения, массивы и объекты. Например, если у нас есть такой ассоциативный массив:
$marks = [ "John" => 68, "George" => 75, "David" => 65, "Roger" => 40 ];
Мы можем закодировать его как объект JSON, используя json_encode()
:
echo json_encode($marks);
Вывод будет:
{"John":68,"George":75,"David":65,"Roger":40}
Точно так же, если у нас есть такой индексированный массив:
$colors = [ "Blue", "White", "Green", "Black", "Yellow" ];
Мы можем закодировать его как массив JSON, используя json_encode()
:
echo json_encode($colors);
Вывод будет:
["Blue","White","Green","Black","Yellow"]
Обратите внимание, что json_encode()
работает только со строками в кодировке UTF-8, поэтому убедитесь, что ваш ввод правильно закодирован.
Разбор данных JSON с помощью PHP
Чтобы преобразовать данные JSON в значение PHP, мы можем использовать функцию json_decode()
. Эта функция принимает в качестве аргумента строку в формате JSON и возвращает значение PHP. Например, если у нас есть такая строка JSON:
{"type":"donut","name":"Cake","toppings":[{"id":"5002","type":"Glazed"},{"id":"5006","type":"Chocolate with Sprinkles"},{"id":"5004","type":"Maple"}]}
Мы можем декодировать его в объект PHP, используя json_decode()
:
$json = '{"type":"donut","name":"Cake","toppings":[{"id":"5002","type":"Glazed"},{"id":"5006","type":"Chocolate with Sprinkles"},{"id":"5004","type":"Maple"}]}'; $obj = json_decode($json); var_dump($obj);
Вывод будет:
object(stdClass)#1 (3) { ["type"]=> string(5) "donut" ["name"]=> string(4) "Cake" ["toppings"]=> array(3) { [0]=> object(stdClass)#2 (2) { ["id"]=> string(4) "5002" ["type"]=> string(6) "Glazed" } [1]=> object(stdClass)#3 (2) { ["id"]=> string(4) "5006" ["type"]=> string(22) "Chocolate with Sprinkles" } [2]=> object(stdClass)#4 (2) { ["id"]=> string(4) "5004" ["type"]=> string(5) "Maple" } } }
По умолчанию json_decode()
возвращает объект типа stdClass
. Однако мы также можем указать второй параметр $assoc
как true
, чтобы вместо этого получить ассоциативный массив. Например:
$json = '{"type":"donut","name":"Cake","toppings":[{"id":"5002","type":"Glazed"},{"id":"5006","type":"Chocolate with Sprinkles"},{"id":"5004","type":"Maple"}]}'; $arr = json_decode($json, true); var_dump($arr);
Вывод будет:
array(3) { ["type"]=> string(5) "donut" ["name"]=> string(4) "Cake" ["toppings"]=> array(3) { [0]=> array(2) { ["id"]=> string(4) "5002" ["type"]=> string(6) "Glazed" } [1]=> array(2) { ["id"]=> string(4) "5006" ["type"]=> string(22) "Chocolate with Sprinkles" } [2]=> array(2) { ["id"]=> string(4) "5004" ["type"]=> string(5) "Maple" } } }
Доступ к данным JSON с помощью PHP
Как только мы декодировали данные JSON в значение PHP, мы можем получить доступ к его элементам, используя стандартный синтаксис для массивов или объектов. Существуют разные способы доступа к элементам объекта или массива JSON, в зависимости от того, используем ли мы ассоциативный массив или объект.
Доступ к данным JSON как к объекту
Если мы используем объект для хранения декодированных данных JSON, мы можем получить доступ к его свойствам с помощью оператора стрелки (->
). Например, если у нас есть такой объект PHP:
$obj = json_decode('{"Peter":35,"Ben":37,"Joe":43}');
Мы можем получить доступ к его свойствам с помощью оператора стрелки (->
):
echo $obj->Peter; // Output: 35 echo $obj->Ben; // Output: 37 echo $obj->Joe; // Output: 43
Мы также можем перебирать свойства объекта, используя цикл foreach
. Например:
foreach ($obj as $key => $value) { echo $key . " => " . $value . "<br>"; } // Output: // Peter => 35 // Ben => 37 // Joe => 43
Доступ к данным JSON в виде массива
Если мы используем ассоциативный массив для хранения декодированных данных JSON, мы можем получить доступ к его элементам с помощью квадратных скобок ([]
). Например, если у нас есть такой ассоциативный массив PHP:
$arr = json_decode('{"Peter":35,"Ben":37,"Joe":43}', true);
Мы можем получить доступ к его элементам, используя квадратные скобки ([]
):
echo $arr["Peter"]; // Output: 35 echo $arr["Ben"]; // Output: 37 echo $arr["Joe"]; // Output: 43
Мы также можем перебрать элементы массива, используя цикл foreach
. Например:
foreach ($arr as $key => $value) { echo $key . " => " . $value . "<br>"; } // Output: // Peter => 35 // Ben => 37 // Joe => 43
В этом сообщении блога мы узнали, как создавать и анализировать данные JSON с помощью PHP, используя встроенные функции json_encode()
и json_decode()
. Мы также узнали, как получить доступ к декодированным значениям и управлять ими с помощью массивов или объектов. Мы также объяснили различные типы значений, которые можно закодировать в JSON, и различные способы доступа к ним в PHP. JSON — это мощный и гибкий формат для обмена данными, а PHP упрощает работу с ним.
Спасибо за прочтение!