JSON: основы использования

JSON - простой, основанный на использовании текста, способ хранить и передавать структурированные данные. С помощью простого синтаксиса вы можете легко хранить все, что угодно, начиная от одного числа до строк, массивов и объектов, в простом тексте. Также можно связывать между собой массивы и объекты, создавая сложные структуры данных.+

После создания строки JSON, ее легко отправить другому приложению или в другое место сети, так как она представляет собой простой текст.

JSON имеет следующие преимущества:

  • Он компактен.
  • Его предложения легко читаются и составляются как человеком, так и компьютером.
  • Его легко преобразовать в структуру данных для большинства языков программирования (числа, строки, логические переменные, массивы и так далее)
  • Многие языки программирования имеют функции и библиотеки для чтения и создания структур JSON.

Название JSON означает JavaScript Object Notation (представление объектов JavaScript). Как и представляет имя, он основан на способе определения объектов (очень похоже на создание ассоциативных массивов в других языках) и массивов.

 

Для чего используется JSON?

Наиболее частое распространенное использование JSON - пересылка данных от сервера к браузеру. Обычно данные JSON доставляются с помощью AJAX, который позволяет обмениваться данными браузеру и серверу без необходимости перезагружать страницу.

Пример:

  1. Пользователь нажимает миниатюру продукта в онлайн магазине.
  2. JavaScript, выполняющийся на браузере, генерирует запрос AJAX к скрипту PHP, запущенному на сервере, передавая ID выбранного продукта.
  3. Скрипт PHP получает название продукта, описание, цену и другую информацию из базы данных. Затем составляет из данных строку JSON и отсылает ее браузеру.
  4. JavaScript, выполняющийся на браузере, получает строку JSON, декодирует ее и выводит информацию о продукте на странице для пользователя.

Также можно использовать JSON для отправки данных от браузера на сервер, передавая строку JSON в качестве параметра запросов GET или POST. Но данный метод имеет меньшее распространение, так как передача данных через запросы AJAX может быть упрощена. Например, ID продукта может быть включен в адрес URL как часть запроса GET. 

 

Как создать строку JSON?

Есть несколько основных правил для создания строки JSON:

  • Строка JSON содержит либо массив значений, либо объект (ассоциативный массив пар имя/значение).
  • Массив заключается в квадратные скобки ([ и ]) и содержит разделенный запятой список значений.
  • Объект заключается в фигурные скобки ({ и }) и содержит разделенный запятой список пар имя/значение.
  • Пара имя/значение состоит из имени поля, заключенного в двойные кавычки, за которым следует двоеточие (:) и значение поля.
  • Значение в массиве или объекте может быть:
    • Числом (целым или с плавающей точкой)
    • Строкой (в двойных кавычках)
    • Логическим значением (true или false)
    • Другим массивом (заключенным в квадратные скобки)
    • Другой объект (заключенный в фигурные скобки)
    • Значение null

Чтобы включить двойные кавычки в строку, нужно использовать обратную косую черту: \". Так же, как и во многих языках программирования, можно помещать управляющие символы и шестнадцатеричные коды в строку, предваряя их обратной косой чертой.  

 

Простой пример строки JSON

Ниже приводится пример оформления заказа в формате JSON:

01 {
02   "orderID": 12345,
03   "shopperName""Ваня Иванов",
04   "shopperEmail""ivanov@example.com",
05   "contents": [
06     {
07       "productID": 34,
08       "productName""Супер товар",
09       "quantity": 1
10     },
11     {
12       "productID": 56,
13       "productName""Чудо товар",
14       "quantity": 3
15     }
16   ],
17   "orderCompleted"true
18 }

Рассмотрим строку подробно:

  • Мы создаем объект с помощью фигурных скобок  ({ и }).
  • В объекте есть несколько пар имя/значение:
    "orderID": 12345
    Свойство с именем "orderId" и целочисленным значением  12345
    "shopperName": "Ваня Иванов"
    свойство с именем "shopperName" и строковым значением "Ваня Иванов"
    "shopperEmail": "johnsmith@example.com"
    Свойство с именем "shopperEmail" и строковым значением "ivanov@example.com"
    "contents": [ ... ]
    Свойство с именем "contents", значение которого является массивом
    "orderCompleted": true
    Свойство с именем "orderCompleted" и логическим значением true
  • В массиве "contents" есть 2 объекта, представляющие отдельные позиции в заказе. Каждый объект содержит 3 свойства: productIDproductName, и quantity.

Кстати, так как JSON основан на объявлении объектов JavaScript, то вы можете быстро и просто сделать выше приведенную строку JSON объектом JavaScript:

01 <script type="text/javascript">
02 var cart = {
03   "orderID": 12345,
04   "shopperName""Ваня Иванов",
05   "shopperEmail""ivanov@example.com",
06   "contents": [
07     {
08       "productID": 34,
09       "productName""Супер товар",
10       "quantity": 1
11     },
12     {
13       "productID": 56,
14       "productName""Чудо товар",
15       "quantity": 3
16     }
17   ],
18   "orderCompleted"true
19 };
20 </script>

подробнее здесь - https://ruseller.com/lessons.php?id=1212&rub=27