Продолжаем рассматривать язык программирования PHP и сегодня мы поговорим о функционале, с помощью которого можно преобразовывать данные в формат JSON, а также обрабатывать данные, полученные в виде JSON строки. Другими словами, мы научимся работать с форматом JSON на PHP.
И так как о таком формате как JSON мы с Вами еще не разговаривали, поэтому для начала предлагаю рассмотреть основы этого формата, а затем перейти к тем средствам, которые используются в PHP для работы с JSON.
JSON — формат обмена данными
JSON (Object Notation JavaScript) – это простой текстовый формат обмена данными, который представляет собой строку в виде пар параметр-значение с определенными разделителями. В формате JSON в качестве типа значения параметра могут выступать:
- Строка (значение в кавычках «Пример»);
- Число;
- Логический тип (true, false);
- null;
- Объект (значение в фигурных скобках {});
- Массив (значение в квадратных скобках []).
Сейчас давайте я попробую привести пример синтаксиса данного формата.
{
"string": "Пример строки",
"numeric": 100,
"boolean": true,
"null": null,
"array": [
{
"arr_element_1_field_1": "Первое свойство первого элемента",
"arr_element_1_field_2": 100,
"arr_element_1_field_3": true
},
{
"arr_element_2_field_1": "Первое свойство второго элемента",
"arr_element_2_field_2": 200,
"arr_element_2_field_3": true
}
],
"object": {
"name": "Пример свойства объекта"
}
}
Как Вы понимаете, в качестве элементов массива могут выступать объекты, другими словами, формат JSON предназначен не только для передачи каких-то значений, но и целых структур.
Полный стандарт данного формата можно посмотреть вот на этой странице, а мы с Вами переходим к работе с JSON на языке программирования PHP.

PHP – функции для работы с JSON
В языке PHP существуют специальные функции для работы с форматом JSON, а именно json_encode и json_decode они уже встроены в ядро PHP, поэтому никаких библиотек подключать не нужно.
json_encode – функция PHP, которая возвращает преобразованные данные в виде строки JSON. В качестве второго необязательного параметра можно передавать дополнительные опции.
json_decode — функция PHP для преобразования JSON строки в переменную PHP. В результате преобразования по умолчанию в переменной будет лежать объект, если Вы хотите преобразовать в ассоциативный массив, то в качестве второго параметра передайте true.
Примеры работы json_encode и json_decode
Для примера давайте сформируем массив данных, преобразуем его в JSON строку, выведем на экран, затем преобразуем обратно в переменную (объект) PHP и также стандартными средствами выведем содержимое этого объекта на экран, плюс просмотрим информацию о переменной с помощью var_dump.
<?PHP
//Формируем массив данных
$Param=array("string"=>"Пример строки",
"numeric"=>100,
"boolean"=>true,
"null"=>null,
"array"=>array(
[
"arr_element_1_field_1"=>"Первое свойство первого элемента",
"arr_element_1_field_2"=>100,
"arr_element_1_field_3"=>true
],
[
"arr_element_2_field_1"=>"Первое свойство второго элемента",
"arr_element_2_field_2"=>200,
"arr_element_2_field_3"=>true
]
),
"object"=>array("name"=>"Пример свойства объекта")
);
/*Выводим на экран JSON строку с опцией
JSON_UNESCAPED_UNICODE (доступно начиная с версии PHP 5.4)
т.е. не кодировать многобайтные символы юникода иначе выведется строка вида
u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 и так далее*/
$result = json_encode($Param, JSON_UNESCAPED_UNICODE);
echo $result . '</br>';
echo '<hr>';
//преобразовываем JSON строку в объект
$result = json_decode($result);
//Выводим на экран
//Сначала смотрим, что лежит в объекте
foreach ($result as $field => $value) {
//если скалярное значение
if (is_scalar($value) or is_null($value)){
echo $field . ' - ' . $value . '</br>';
}
//если массив
if (is_array($value)){
for ($i = 0; $i < count($value); $i++) {
//а в нем у нас объекты
foreach ($value[$i] as $field_ob => $value_ob) {
echo $field . ' -> ' . $field_ob . ' -> ' . $value_ob . '</br>';
}
}
}
//если другой объект
if (is_object($value)){
foreach ($value as $field_ob => $value_ob) {
echo $field . ' -> ' . $field_ob . ' -> ' . $value_ob . '</br>';
}
}
}
echo '<hr>';
//и напоследок выведем информацию о переменной с помощью var_dump
var_dump($result);
?>
Результат

Для начинающих я думаю достаточно, если Вас интересует более подробная информация о работе PHP с JSON, то можете посмотреть на официальном сайте вот здесь. Надеюсь, данный материал был Вам полезен, удачи!
