Продолжаем рассматривать язык программирования 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, то можете посмотреть на официальном сайте вот здесь. Надеюсь, данный материал был Вам полезен, удачи!