JSON (сокращение от JavaScript Object Notation) — это текстовый формат, предназначенный для хранения и передачи структурированных данных. Формат создал американский программист Дуглас Крокфорд в 2001 году; в декабре 2017 года IETF закрепил его как интернет-стандарт RFC 8259. JSON читают и компьютер, и человек: данные организованы в виде пар «ключ-значение» и списков.
JSON – это универсальный язык для отображения данных, который способен читать не только человек, но и все современные программы. Аббревиатура образована из англоязычного выражения JavaScript Object Notation. Последнее наглядно демонстрирует, что в основе формата лежит JavaScript, популярный и широко распространенный язык программирования. Простота и понятность синтаксиса обеспечивает универсальность JSON. С течением времени он «оторвался» от корней и стал независимым от JavaScript. Более того, сегодня JSON очень активно применяется при программировании на многих языках, включая такие востребованные как Python, C#, Java и т.д.
Школа |
Эдюсон |
Стоимость |
84 915 руб |
Цена в рассрочку |
4 162 руб/мес |
Длительность курса |
|
Программа трудоустройства |
Есть |
Формат |
Запись лекций |
Школа |
Яндекс Практикум |
Стоимость |
137 000 руб |
Цена в рассрочку |
16 000 руб/мес |
Длительность курса |
|
Программа трудоустройства |
Есть |
Формат |
Запись лекций, Онлайн занятия с преподавателем |
Школа |
Яндекс Практикум |
Стоимость |
170 500 руб |
Цена в рассрочку |
20 100 руб/мес |
Длительность курса |
|
Программа трудоустройства |
Есть |
Формат |
Запись лекций, Онлайн занятия с преподавателем |
Фактически JSON представляет собой текстовые файлы, которые составлены по относительно простым и одновременно строгим правилам. Главным из них становится структурирование данных с помощью двух способов:
Для большей наглядности стоит привести пример простого кода JSON в виде объекта. Она выглядит следующим образом:
{
“name”: “Алексей”,
“age”: 30,
“skills”: [“SEO”, “Python”, “SQL”]
}
Использование двух перечисленных способов позволяет JSON поддерживать сразу 6 типов данных (источник: RFC 8259, ECMA-404):
Вот – пример, в котором есть все:
{
"name": "example", //строка
"isActive": true, //булево значение
"age": 30, //число
"address": null, //null
"skills": ["JavaScript", "SQL", "Python"], //массив
"details": { //объект
"position": "Developer",
"experience": 5
}
}
Еще проще и удобнее работу с JSON делает возможность совмещать блоки кода с пояснительными текстовыми фрагментами. Последние помогают с быстрым распознаванием синтаксиса. В результате достигается читаемость кода даже программистами со сравнительно невысоким уровнем профессиональной подготовки.
Текстовые фрагменты выделяются по правилам конкретного языка программирования. Например, // (для JavaScript) или # (для Python). Они вставляются в любую часть кода и не мешают его исполнению программой. Причем с задействованием любого языка программирования, поддерживающего формат JSON. То есть с равным успехом и для JavaScript, и, например, для Python. Исходный код для второго может выглядеть следующим образом.
import json
data = {
"name": "Bob",
"age": 30,
"skills": ["Java", "SQL"]
}
# Преобразование объекта в JSON-строку
json_string = json.dumps(data)
print(json_string)
# Парсинг JSON-строки в объект
data = json.loads(json_string)
print(data["name"]) # Выведет: Bob
Универсальность, удобство и широкое распространение формата JSON в немалой степени стали следствием четко выработанных и одновременно достаточно простых правил синтаксиса. Ключевые из них выглядят следующим образом:
Творческий подход автора формата Дугласа Крокфорда выразился в любопытном нюансе. Он собственноручно добавил фразу «The Software shall be used for Good, not Evil» в лицензию JSON. Ее перевод очевиден: «Программное обеспечение должно использоваться для Добра, но не для Зла». Цель подобных действий – высмеивание и даже сарказм в отношении корпоративных юристов. Результатом стали проблемы совместимости с другими лицензиями, полученными по схеме open-source (то есть с открытым исходным кодом).
Данные Wikipedia позволяют выделить несколько этапов появления и становления LSON как международного стандарта хранения и передачи структурированных данных:
Формат JSON активно применяется в веб-разработке сразу по четырем основным направлениям:
Обязательным условием эффективного применения JSON на практике выступает последовательное выполнение двух процессов. Первый называется сериализация и представляет собой преобразование объекта (из памяти) в текстовую JSON-строку для дальнейшего сохранения и/или передачи. Задача решается использованием специального инструмента:
Прямо противоположный процесс называется десериализация, под которой понимается обратное преобразование тестового формата в исходную структуру для размещения в памяти. В этом случае в программном коде появляются:
Одним из главных достоинств JSON заслуженно считается простота и лаконичность. Оборотной стороной такого преимущества выступает некоторая ограниченность инструментария, доступного разработчикам ПО.
Логичным выходом из ситуации становится появление нескольких расширений и дополнительных стандартов. Каждое из них одновременно решает две главных задачи: расширение функциональных возможностей с сохранением так называемого RESTFul. Термин показывает соответствие принципам архитектуры исходного продукта, обеспечивающим универсальность и совместимость формата практически со всеми популярными языками программирования.
Среди наиболее популярных расширений JSON стоит отметить два:
Отдельного упоминания заслуживает стандарт JSON Schema. Он применяется для описания структуры, типа данных и ограничений, которые необходимы при написании JSON-документов. Фактически стандарт представляет собой своеобразный чертеж или схему, которая используется в качестве исходного шаблона для последующей работы.
JSON Schema помогает разработчику решить сразу четыре очень важных задачи:
Наиболее значимыми преимуществами формата JSON выступают:
Основным недостатком формата выступает отсутствие поддержки сложных структур и комментариев. Проблема решается за счет использования дополнительных инструментов (расширений и стандартов), где указанные опции присутствуют.
JSON с разной степенью успешности конкурирует с двумя другими популярными форматами хранения и передачи данных. Поэтому имеет смысл сравнить их с использованием типовых критериев.
|
Критерий для сравнения |
Формат хранения и передачи данных |
||
|
JSON |
XML |
YAML |
|
|
Читаемость человеком |
Высокая |
Средняя |
Очень высокая |
|
Размер файла |
Компактный |
Большой (из-за закрывающих тегов) |
Компактный |
|
Скорость парсинга браузером |
Высокая (по ряду реализаций в десятки раз выше, чем у XML) |
Низкая |
Средняя |
|
Поддержка комментариев |
Нет |
Да |
Да |
|
Поддержка схем |
JSON Schema |
XSD |
Да |
|
Приоритетная сфера применения |
Веб-разработка, API, конфигурация |
SOAP, документы, legacy |
CI/CD, DevOps-конфигурация |
|
Стандарт |
КАС 8259б ECMA-404 |
W3C |
Нет |
Основные направления применения JSON перечислены выше. XML используется на практике при программировании SOAP-сервисов, в legacy-системах и различной документации. YAML применяется там, где читаемость важнее скорости, например, для конфигурации DevOps.
|
Задача программиста |
Оптимальный формат данных |
Обоснование рекомендации |
|
Разработка REST API между клиентом и сервером |
JSON |
Компактный формат с быстрым парсингом и нативной поддержкой в браузере |
|
Написание файла конфигурации с комментариями |
YAML или JSON5 |
Стандартный формат JSON не имеет опции поддержки комментариев |
|
Необходимость интеграции с legacy или SOAP-сервисом |
HML |
SOAP-сервис требует по протоколу использование формата XML |
|
Программирование CI/CDпайплайнов и файлов конфигурации DevOps |
YAML |
На первый план выходит поддержка комментариев и читаемость (они важнее скорости) |
|
Потребность в передаче бинарных данных (например, изображений) |
Protocol Buffers (бинарные форматы данных) |
Base64 в JSON приводит к заметному (на 33 %) увеличению объемов файлов с данными |
|
Хранение документов в базах данных |
JSON или JASONB (PostgreSQL) |
Формат обладает гибкой схемой и нативной поддержкой в SQL и NoSQL |
JSON — это текстовый формат, в котором данные записаны парами «название поля: значение». Его понимают и человек, и программа. Формат используют, когда нужно передать данные между двумя разными системами — например, из мобильного приложения на Swift в серверное API на Java.
JSON компактнее: в XML каждый элемент требует открывающего и закрывающего тега, что увеличивает размер файла. Браузеры обрабатывают JSON в десятки раз быстрее XML по ряду реализаций. XML чаще применяют в legacy-системах и SOAP-сервисах, JSON — в REST API и современных веб-приложениях.
Нет, JSON не поддерживает комментарии. В то же время у разработчиков имеется возможность добавлять в исходный код текстовые фрагменты (для дачи пояснений или упрощения читаемости) или воспользоваться расширениями исходного формата (обладают встроенной опцией поддержки комментариев, нередко – и однострочных, и многострочных).
Разработчики YAML сделали акцент на удобочитаемости и поддержке комментариев, что выгодно отличает формат от JSON. Второй, в свою очередь, обладает большей строгостью правил и несколько сильнее машинно-ориентирован (что особенно актуально в сегодняшних условиях стремительного роста возможностей ИИ).
Формат CSV актуален для классического представления табличных данных в виде строк и столбцов. JSON отличается заметно большей гибкостью и способностью описывать сложные иерархические структуры, в том числе вложенные или с разными типами данных (даже внутри одного поля).
Изучить основы практического применения формата JSON проще и удобнее всего с помощью онлайн-курсов. Сравнить и подобрать оптимальную программу подготовки специалиста можно на edu.sravni.ru.