PHP — примеры работы с форматом JSON

Продолжаем рассматривать язык программирования 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.

Скриншот 1

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);
   ?>

Результат

Скриншот 2

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

Понравилась статья? Поделиться с друзьями:
Заметки IT специалиста
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:
Нажимая на кнопку «Отправить комментарий», я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.