JSON или JavaScript Object Notation – это формат, реализующий неструктурированное текстовое представление структурированных данных, основанное на принципе пар ключ-значение и упорядоченных списках. Хотя JSON начал свое распространение с JavaScript, он поддерживается в большинстве языков, либо изначально, либо с помощью специальных библиотек. Обычно Json используется для обмена информацией между веб-клиентами и веб-сервером.
За последние 15 лет JSON стал формальным стандартом обмена данными и используется практически везде в интернете. Сегодня он используется практически всеми веб-серверами. К такой популярности привело еще и то, что многие базы данных поддерживали JSON. Современные реляционные базы данных, такие как PostgreSQL и MySQL теперь поддерживают хранение и экспорт данных в JSON. Базы данных, такие как MongoDB и Neo4j также поддерживают JSON, хотя MongoDB использует слегка модифицированную версию JSON. В этой статье мы рассмотрим что такое JSON, его преимущества над XML, его недостатки, а также когда его лучше использовать.
Что такое JSON?
Чтобы понять зачем нужен формат JSON и как он работает не обойтись без практики. Сначала давайте рассмотрим такой пример:
<
“firstName”: “Jonathan”,
“lastName”: “Freeman”,
“loginCount”: 4,
“isWriter”: true,
“worksWith”: [“Spantree Technology Group”, “InfoWorld”],
“pets”: [
<
“name”: “Lilly”,
“type”: “Raccoon”
>
]
>
В этой структуре мы четко определили некоторые атрибуты человека. Сначала мы определили имя, фамилию, количество авторизаций в системе, является ли этот человек писателем, список компаний, с которыми он работает и список домашних животных. Такая или похожая структура может быть передана с сервера в веб-браузер или мобильное приложение, которое уже может делать все что нужно с этими данными, например, отобразить их или сохранить.
JSON – это общий формат данных с минимальным количеством типов значений – строки, числа, булевы значения (единица или ноль), списки, объекты и нуль. Несмотря на то, что JSON является подмножеством JavaScript, такие типы данных есть в большинстве популярных языков программирования что делает JSON хорошим кандидатом для передачи данных между программами, написанными на разных языках.
Почему вам следует использовать JSON?
Чтобы понять полезность и важность JSON нам нужно немного разобраться в истории интерактивности в интернет. В начале 2000 годов интерактивность работы веб-сайтов начала меняться. В то время браузер служил только для отображения информации, а всю работу по подготовке контента к отображению выполнял веб-сервер. Когда пользователь нажимал кнопку в браузере, запрос отправлялся на сервер, где собиралась и отправлялась страница HTML, готовая для отображения. Такой механизм был медленным и неэффективным. Это требовало, чтобы браузер повторно перерисовывал все на странице, даже если изменилась небольшая часть данных.
В то время передача тарификация выполнялась за количество переданных данных, поэтому разработчики понимали, что перезагрузка целой страницы обходится очень дорого и рассматривали новые технологии для улучшения пользовательского интерфейса. Тогда возможность создания веб-запросов в фоновом режиме, которая была добавлена в Internet Explorer 5 оказалась довольно жизнеспособным подходом к поэтапной загрузке данных для отображения. Вместо перезагрузки страницы, нажатие на кнопку просто выполнит веб-запрос, который будет работать в фоновом режиме. Содержимое будет обновлено, как только загрузится. Им можно управлять с помощью JavaScript, универсального языка программирования для браузеров.
Изначально данные передавались в формате XML, но он был сложным для его использования в JavaScript. В JavaScript уже были объекты, которые использовались для представления данных в языке, поэтому Дуглас Крокфорд взял синтаксис объектов JS и использовал его в качестве спецификации нового формата обмена данными, который назывался JSON. Этот формат было намного проще читать и разбирать в браузере на JavaScript. Вскоре разработчики начали использовать JSON вместо XML.
Сейчас быстрый обмен данными JSON является стандартом де-факто для передачи данных между сервером и клиентом, мобильными приложениями и даже внутренними системными службами.
JSON против XML
Как я говорил выше, основной альтернативой JSON был и является XML. Однако XML становится все менее распространенным в новых системах. И очень легко понять почему. Ниже приведен пример записи данных, которые вы видели выше в Json через XML:
<?xml version=”1.0″?>
<person>
<first_name>Jonathan</first_name>
<last_name>Freeman</last_name>
<login_count>4</login_count>
<is_writer>true</is_writer>
<works_with_entities>
<works_with>Spantree Technology Group</works_with>
<works_with>InfoWorld</works_with>
</works_with_entities>
<pets>
<pet>
<name>Lilly</name>
<type>Raccoon</type>
</pet>
</pets>
</person>
В дополнение к избыточности кода, по сути запись данных заняла в два раза больше места, XML еще вводит некоторую двусмысленность при анализе структуры данных. Преобразование XML в объект JavaScript может занять от десятков до сотен строк кода и требует тонкой настройки для каждого анализируемого объекта. Преобразование JSON в объект JavaScript выполняется в одну строчку и не требует каких-либо предварительных знаний об анализируемом объекте.
Ограничения JSON
Хотя JSON относительно сжатый и гибкий формат данных, с которым легко работать на многих языках программирования, у него есть некоторые недостатки. Вот некоторые ограничения:
- Нет структуры. С одной стороны, это означает, что у вас есть полная гибкость для представления данных любым способом. С другой, вы можете легко хранить неструктурированные данные.
- Только один тип чисел. поддерживается формат с плавающей запятой и двойной точностью IEEE-754. Это довольно много, но вы не можете использовать то многообразие числовых типов, что есть в других языках.
- Нет типа даты. разработчики должны использовать строковые представления дат, что может вызвать несоответствие форматирования. Или же использовать в качестве даты количество миллисекунд, прошедших с начала эпохи Unix (1 января 1970).
- Нет комментариев – вы не сможете делать аннотации для полей, которые требуют этого прямо в коде.
- Подробность – хотя JSON менее подробный, чем XML, это не самый сжатый формат обмена данными. Для высокопроизводительных или специализированных служб вы захотите использовать более эффективные форматы.
Когда следует использовать JSON?
Если вы разрабатываете программное обеспечение, которое взаимодействует с браузером или нативным мобильным приложением, вам лучше использовать JSON. Использование XML считается устаревшим. Для связи между серверами JSON может быть не очень эффективным и лучше использовать инфраструктуру сериализации, похожую на Apache Avro или Apache Thrift. Даже здесь JSON – это не плохой выбор, и он может давать все что вам нужно. Но нет точного ответа что выбрать.
Если вы используете базы данных MySQL, ваша программа будет в большой степени зависеть от того, что делается в базе данных. В реляционных базах данных, которые поддерживают JSON считается хорошим тоном использовать его как можно меньше. Реляционные базы данных были разработаны для данных определенной схемы. Хотя большинство из них сейчас поддерживает формат данных JSON, производительность работы с ним будет значительно ниже.
Выводы
JSON – это формат данных, нацеленный в первую очередь на отправку данных между веб-серверами и браузерами или мобильными приложениями. Формат имеет простой дизайн и гибкость, его легко читать и понимать, а также легко работать с такими данными в большинстве языков программирования. Отсутствие строгой схемы обеспечивает гибкость формата, но такая гибкость иногда затрудняет чтение и понимание данных.
Возможно, вам придется трудно при работе с JSON в строго типизированных языках, таких как Scala или Elm, но широкое распространение формата предполагает, что есть утилиты и библиотеки, которые помогут даже при решении сложных задач. Теперь вы знаете что такое json и как его использовать.