Миру нужны форматы обмена данными, такие как 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, а также для написания этой статьи. Почему бы тебе не взглянуть на них? Они прекрасны. :)
- Введение Линдси Бассетт в объектную нотацию JavaScript
- JSON в действии - Udemy
- XMLHttpRequest - веб-документы MDN
- Работа с данными JSON с помощью модуля json - YouTube
Если вам понравилась эта статья, не стесняйтесь хлопать много раз (вы знаете, что хотите!) И поделитесь с другом. Вы также можете оставить комментарий, чтобы задать вопрос или рассказать мне, как улучшить. :)
Даршан Маджития студент последнего курса факультета ИТ-инженерии. Я увлечен наукой о данных и веб-разработкой. Я считаю, что данные и запоминающийся пользовательский опыт - это две важнейшие составляющие любого интеллектуального продукта. Свяжитесь со мной в LinkedIn или поздоровайтесь в Twitter.