Миру нужны форматы обмена данными, такие как XML и JSON, для обмена данными между очень разными системами. Переносимость или совместимость при передаче информации между платформами и системами - основная цель формата обмена данными.

| Предпосылки

  • Базовое понимание различных парадигм программирования.
  • Знакомство с синтаксисом JavaScript и Python.

1 | Представляем JSON

JSON расшифровывается как «JavaScript Object Notation». Он также известен как «формат обмена данными», поскольку он используется для хранения и обмена данными.

Свойства JSON

  • На основе объектной буквальной нотации JavaScript.
  • Независимый от языка.
  • Есть поддержка на всех популярных языках программирования.
  • Организованный и легкий доступ.

Суть формата обмена данными - быть независимым от языка.

Почему в настоящее время JSON является более предпочтительным форматом обмена данными по сравнению с XML?

JSON имеет более удобный для чтения формат по сравнению с XML. Там, где XML использует множество открывающих и закрывающих тегов, JSON просто использует {} для объектов, [] для массивов, и это делает его намного более легким. Это, в свою очередь, приводит к более быстрой обработке и передаче.

2 | Синтаксис JSON

Давайте быстро рассмотрим основной синтаксис JSON. Синтаксис JSON в основном рассматривается как подмножество синтаксиса JavaScript. Он включает в себя следующее -

  • Данные представлены парами "ключ-значение".
  • Фигурные скобки ({…}) удерживают объекты.
  • За каждым ключом следует двоеточие (:).
  • Пары "ключ-значение" разделяются запятой (,).
  • Ключи и строковые значения должны быть заключены в двойные кавычки («…»).
  • Квадратные скобки ([…]) содержат массивы, а значения разделяются запятой.

Ниже приведен простой пример -

{
   "book": [
      {
         "id": 2,
         "language":"JSON",
         "title":"Introduction to JSON"
         "author":"Lindsay Bassett"
      },
      {
         "id":5,
         "language":"Python",
         "title":"Introduction to Python"
         "author":"Bill Lubanovic"
      }
   ]
}

В ключах можно даже поставить апостроф - “Darshan’s animal”:“dog”. Но пары ключ-значение, используемые в JSON, при загрузке в память системой в качестве объекта станут «свойством» или «атрибутом». Наличие в ключе пробела или специального символа (кроме A – Z, a – z, 0–9) не учитывает переносимость. Это может снизить переносимость; поэтому важно избегать пробелов и специальных символов в ключах для максимальной переносимости. Вместо этого вы можете использовать Camel Case — “darshansAnimal”:“dog”.

3 | Типы данных JSON

Вот список всех типов данных для значений, которые можно использовать для представления данных в JSON:

  • номер
  • строка (в двойных кавычках)
  • логическое значение (истина или ложь)
  • нулевой
  • объект
  • множество

Ниже приведен очень простой пример, который использует все типы данных -

{
     "first-name":"Darshan",
     "last-name":"Majithiya",
     "age":20,
     "married":false,
     "experience":null,
     "programmingLanguages":["Python", "JavaScript", "PHP", "SQL"],
     "education":{
                 "college":"GCET",
                 "school":"St. Xavier's High School"
              }
}

4 | Сериализация, десериализация и запрос данных JSON на стороне клиента

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

var myXMLHttpRequest = new XMLHttpRequest(); 
var url = VALID_URL_TO_REQUEST_THE_JSON_DATA_FROM;
myXMLHttpRequest.onreadystatechange = function() { 
if (myXMLHttpRequest.readyState === 4 && myXMLHttpRequest.status === 200) { 
       var myObject = JSON.parse(myXMLHttpRequest.responseText); 
       var myJSON = JSON.stringify(myObject); 
     } 
  }
myXMLHttpRequest.open(“GET”, url, true); 
myXMLHttpRequest.send();
  • В первой строке показано создание объекта XMLHttpRequest. Хотя похоже, что JavaScript XMLHttpRequest имеет отношение к XML. Однако XMLHttpRequest не ограничивается XML. Мы используем его для запроса JSON, несмотря на его название. Он использует протокол HTTP для запроса данных.
  • Вторая строка показывает назначение действительного URL-адреса, с которого мы можем запросить данные. Обычно этот URL-адрес представляет собой комбинацию SERVER_ADDRESS, WEB_API_KEY и REQUESTED_DATA.
  • Затем мы создали функцию и присвоили ее свойству onreadystate change объекта myXMLHttpRequest. Эта функция будет выполняться каждый раз при изменении свойства readyState. В функции проверьте, имеет ли значение readyState значение 4 (код «готово») и состояние HTTP 200 (код успеха). Если обе эти вещи верны, проанализируйте JSON в объект JSON.
  • Когда JSON преобразуется в текст из объекта, а затем из объекта обратно в текст, вы часто слышите два термина: сериализация и десериализация. Сериализация - это преобразование объекта в текст. Десериализация - это процесс обратного преобразования текста в объект.
  • Когда мы получаем данные с веб-сервера, это всегда строка. В JavaScript десериализация выполняется с помощью JSON.parse().
  • При отправке данных на веб-сервер данные должны быть строкой. В JavaScript сериализация выполняется с помощью JSON.stringify().
  • XMLHttpRequest.open() инициализирует вновь созданный запрос или повторно инициализирует существующий, и XMLhttpRequest.send() отправляет запрос на сервер. Если запрос является асинхронным (что по умолчанию), этот метод возвращается, как только запрос отправляется, и результат доставляется с использованием событий. Если запрос синхронный, этот метод не возвращается, пока не будет получен ответ.

5 | Сериализация, десериализация и запрос данных JSON на стороне сервера

Успех формата обмена данными в Интернете требует поддержки как на стороне клиента, так и на стороне сервера. Если бы у нас была поддержка на стороне клиента, но не на стороне сервера, JSON был бы мертв в воде. К счастью, JSON широко поддерживается большинством серверных веб-фреймворков или языков сценариев. Если у них нет встроенной поддержки сериализации и десериализации JSON, вполне вероятно, что существует библиотека или расширение для его поддержки.

Мы будем использовать Python, чтобы продемонстрировать реализацию на стороне сервера. Взгляните на приведенный ниже код -

import requests
import json
response = requests.get(VALID_URL_TO_GET_THE_JSON_DATA_FROM)
if response.status_code == 200:
    '''converts JSON data into appropriate Python object'''    
    load_content = json.loads(response.text)
'''converts Python object into JSON'''
    dump_content = json.dumps(load_content)
  • Сначала импортируем необходимые библиотеки - запросы и json. (Вы также можете использовать библиотеку urllib.request вместо requests.)
  • Затем мы запрашиваем данные с действительного URL, выполняя запрос HTTP GET с использованием requests.get(). (Вы также можете сделать запрос HTTP POST, используя requests.post().)
  • response.status_code() проверьте, успешен ли запрос.

  • json.loads() десериализует данные JSON в соответствующий объект Python. (Посмотрите изображение 1, чтобы увидеть, как разные типы данных JSON преобразуются в python)
  • json.dumps() сериализует объект Python в поток в формате JSON.

И в запросах, и в json библиотеке есть различные функции, которые можно использовать для выполнения операций чтения / записи. в файлах .json. Вы можете прочитать о них в python-запросах и json-python. Для экспериментов с кодом вы можете использовать этот URL - https://api.github.com/events

Расширение файла для JSON легко запомнить: .json. Тип MIME для JSON - application / json.

| Вывод

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

И сейчас, как никогда раньше, важно быть знакомым с JSON, потому что широко используемая документально-ориентированная база данных NoSQL считывает и записывает данные, отформатированные в JSON, т.е. де-факто стандарт для получения и получения данных. Даже в области науки о данных JSON является широко распространенным форматом для обмена структурированными данными между приложениями и специалистами по данным, когда это возможно.

| использованная литература

Я сослался на нижеприведенные источники для изучения JSON, а также для написания этой статьи. Почему бы тебе не взглянуть на них? Они прекрасны. :)

Если вам понравилась эта статья, не стесняйтесь хлопать много раз (вы знаете, что хотите!) И поделитесь с другом. Вы также можете оставить комментарий, чтобы задать вопрос или рассказать мне, как улучшить. :)

Даршан Маджития студент последнего курса факультета ИТ-инженерии. Я увлечен наукой о данных и веб-разработкой. Я считаю, что данные и запоминающийся пользовательский опыт - это две важнейшие составляющие любого интеллектуального продукта. Свяжитесь со мной в LinkedIn или поздоровайтесь в Twitter.