Медиаблог /

Что такое JSON: текстовый формат передачи данных для разработчиков и аналитиков

16 сентября 2026

Что такое JSON: текстовый формат передачи данных для разработчиков и аналитиков

JSON (JavaScript Object Notation — нотация объектов JavaScript) — текстовый формат обмена данными на основе пар «ключ-значение». Создал его Дуглас Крокфорд в начале 2000-х на основе синтаксиса JavaScript. Сегодня JSON — де-факто стандарт для REST API (интерфейса взаимодействия клиента и сервера поверх HTTP) и один из самых распространённых форматов хранения и передачи данных.

Монитор с подсвеченным JSON-кодом — формат передачи данных

Три свойства объясняют такую популярность: JSON легко читает человек без специальных инструментов, быстро разбирает машина и занимает значительно меньше места, чем XML, — потому что не дублирует имена полей в открывающем и закрывающем тегах. Нативная (встроенная) поддержка есть в каждом современном языке: JavaScript, Python, Java, PHP, Go, Ruby, C#.

image

Учитесь бесплатно за счёт государства

Экономия до 100 000 ₽ на любой программе

Выбрать курс

В статье разберём устройство JSON, синтаксис объектов и массивов, работу с форматом в JavaScript и Python, правила валидации, онлайн-инструменты для отладки и ключевые угрозы безопасности при передаче данных.

Что такое JSON и зачем он нужен

JSON — это не язык программирования и не протокол. Это способ записать структурированные данные в виде обычного текста так, чтобы любая система могла их прочитать, отправить и воспроизвести без потерь.

JSON-ответ REST API в интерфейсе инструмента для HTTP-запросов

Дуглас Крокфорд разработал формат в начале 2000-х: он наблюдал, как разработчики передают данные между браузером и сервером через громоздкие конструкции, и предложил более лёгкое решение на основе синтаксиса объектных литералов JavaScript. Правила оказались простыми: только двойные кавычки, шесть допустимых типов данных, никаких комментариев. Сегодня JSON стандартизирован в RFC 8259 — официальном документе с формальной грамматикой формата.

Где используется JSON:

  • REST API. Клиент и сервер обмениваются JSON-строками при каждом HTTP-запросе.
  • Конфигурационные файлы. package.json в Node.js, tsconfig.json в TypeScript, appsettings.json в .NET.
  • Базы данных. MongoDB и CouchDB хранят документы в структуре, близкой к JSON.
  • Аналитика и логи. Данные о событиях, пользовательских действиях и метрики сервисов.

Формат поддерживается во всех перечисленных языках через встроенные или стандартные библиотеки — именно это делает JSON универсальным: данные сериализуются (преобразуются в строку) на одной стороне и десериализуются (разбираются в объект) на другой без сторонних конвертеров.

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

Как устроен JSON: объекты, массивы и типы данных

JSON строится из двух базовых конструкций: объектов и массивов. Они вкладываются друг в друга на произвольную глубину, образуя сложные иерархические структуры. Значениями могут быть шесть строго определённых типов.

Инфографика с шестью типами данных формата JSON

JSON-объект: пары «ключ-значение» в фигурных скобках

JSON-объект — неупорядоченное множество пар «ключ:значение», заключённое в фигурные скобки { }. Каждый ключ — строка строго в двойных кавычках. Значение отделяется двоеточием. Пары разделяются запятой; запятая после последней пары запрещена.

Пример JSON-объекта с профилем пользователя в редакторе кода

Пример — профиль пользователя:

{

«name»: «Иван Петров»,

«age»: 32,

«isActive»: true,

«roles»: [«admin», «editor»]

}

Типичные ошибки: ключ без кавычек (name: вместо «name»:) и лишняя запятая после последней пары («isActive»: true,). Оба варианта делают JSON невалидным — парсер (программа разбора текста) выдаст ошибку и остановится.

JSON-объекты применяют для профилей пользователей, данных заказов и ответов API. Почти любой ответ REST-сервера содержит один или несколько вложенных объектов.

JSON-массив: упорядоченный набор данных

JSON-массив — упорядоченный список значений в квадратных скобках [ ]. У элементов нет ключей: доступ осуществляется по числовому индексу, начиная с нуля.

В массиве могут стоять строки, числа, объекты и другие массивы:

[«яблоко», «груша», «банан»]

[

{«id»: 1, «product»: «Ноутбук», «price»: 85000},

{«id»: 2, «product»: «Мышь», «price»: 2500}

]

Массивы применяют для списков товаров, истории действий пользователя, наборов тегов и подписок. Массив объектов — стандартный способ передать коллекцию записей из API.

Типы данных в JSON: что может быть значением

JSON поддерживает шесть типов данных:

  • Строка — текст в двойных кавычках: «Томск».
  • Число — целое или дробное без кавычек: 42, 3.14.
  • Boolean — логическое значение: true или false строчными буквами, без кавычек.
  • Null — явное отсутствие значения: null.
  • Объект — вложенная структура в фигурных скобках: { «city»: «Томск» }.
  • Массив — вложенный список в квадратных скобках: [1, 2, 3].

Правило простое: только строки берутся в двойные кавычки. Числа, логические значения и null — без кавычек.

JSON против XML и YAML: сравнение форматов

JSON — не единственный текстовый формат обмена данными. XML появился раньше, YAML удобнее для конфигурационных файлов. У каждого формата своя ниша.

Параметр
JSON
XML
YAML
Синтаксис Пары «ключ-значение», { } и [ ] Открывающие и закрывающие теги Отступы и двоеточия
Вес Лёгкий Тяжёлый (теги дублируются) Средний
Читаемость Хорошая Умеренная Высокая
Комментарии Нет Да (<!— —>) Да (#)
Применение REST API, веб-приложения SOAP, банковские системы Kubernetes, Docker Compose

JSON против XML. XML дублирует имя поля в открывающем и закрывающем теге: <name>Иван</name>. В JSON то же поле занимает вдвое меньше символов: «name»: «Иван». При передаче тысяч записей разница в размере ощутима.

JSON против YAML. YAML читается проще — без скобок и кавычек. Но он критичен к отступам: один лишний пробел ломает документ. JSON синтаксически строже, поэтому предсказуемее при автоматической обработке.

Вывод: JSON оптимален для REST API и передачи данных между системами. YAML — стандарт для DevOps-конфигурационных файлов (Kubernetes, Docker). XML остаётся в SOAP (протоколе обмена структурированными сообщениями) и устаревших банковских системах, где нужны атрибуты тегов.

Освоить работу с форматами данных, API и аналитическими инструментами можно в рамках федерального проекта «Активные меры содействия занятости» — каталог IT-программ включает обучение аналитике и работе с информационными системами: онлайн, без отрыва от работы, бесплатно.

Как работать с JSON в коде

JSON поддерживается нативно в JavaScript и через встроенный модуль в Python. Два ключевых процесса: сериализация — объект превращается в JSON-строку для передачи — и десериализация — полученная строка разбирается обратно в объект. Для обоих процессов сторонние библиотеки не нужны.

Схема преобразования объекта в JSON-строку и обратно

JSON в JavaScript: JSON.parse() и JSON.stringify()

В JavaScript работа с JSON встроена в язык — глобальный объект JSON доступен без импортов.

Методы JSON.parse и JSON.stringify в коде JavaScript

JSON.parse(jsonString) — десериализация: принимает строку JSON, возвращает объект или массив. JSON.stringify(object) — сериализация: принимает объект, возвращает строку JSON.

// Десериализация — строка → объект

const data = JSON.parse(‘{«name»:»Иван»,»age»:32}’);

console.log(data.name); // «Иван»

// Сериализация — объект → строка с отступами

const user = { name: «Анна», age: 28 };

const jsonStr = JSON.stringify(user, null, 2);

Параметр null, 2 в JSON.stringify() добавляет отступы для читаемости — удобно при отладке. При отправке данных через API используйте JSON.stringify(user) без параметров: лишние пробелы только увеличивают размер запроса.

Стандартный сценарий: получить ответ API → распарсить через JSON.parse() → работать с объектом → сериализовать через JSON.stringify() и отправить обратно.

JSON в Python: json.loads() и json.dumps()

В Python модуль json входит в стандартную библиотеку — дополнительная установка не нужна.

Пример кода Python с методами json.loads и json.dumps

json.loads(string) — десериализует строку JSON в словарь Python. json.dumps(dict, indent=4) — сериализует словарь в строку JSON; параметр indent задаёт отступы.

import json

# Десериализация: строка → словарь

raw = ‘{«name»: «Иван», «age»: 32}’

data = json.loads(raw)

print(data[«name»]) # Иван

# Сериализация: словарь → строка JSON

user = {«name»: «Анна», «age»: 28}

json_str = json.dumps(user, ensure_ascii=False, indent=2)

Для работы с файлами используйте json.load(file) при чтении и json.dump(data, file) при записи:

Хотите сменить профессию или повысить квалификацию?

Федеральный проект «Активные меры содействия занятости» даёт возможность пройти обучение бесплатно за счёт государства

  • Программы от ведущих вузов России — от 2 месяцев
  • Удостоверение или диплом установленного образца
  • Центр карьеры: 7 500+ вакансий, помощь с трудоустройством
Оставить заявку
image

with open(«data.json», encoding=»utf-8″) as f:

config = json.load(f)

Параметр ensure_ascii=False сохраняет кириллицу в читаемом виде, а не в виде экранированных последовательностей вроде \u0418\u0432\u0430\u043d.

Как создать и открыть JSON-файл

Создать JSON-файл можно в любом текстовом редакторе: напишите валидную структуру JSON, сохраните файл с расширением .json в кодировке UTF-8. RFC 8259 явно требует UTF-8 — другая кодировка может вызвать ошибки при обработке кириллицы на стороне сервера.

JSON-файл открыт в редакторе кода с деревом файлов и подсветкой

Через код — проще и надёжнее:

import json

data = {«project»: «Аналитика», «version»: 1}

with open(«config.json», «w», encoding=»utf-8″) as f:

json.dump(data, f, ensure_ascii=False, indent=2)

Чем открыть JSON-файл:

  • Visual Studio Code — лучший вариант для разработчика. Встроенная подсветка синтаксиса, автодополнение, мгновенное обнаружение ошибок и сворачивание (folding) вложенных блоков. Файл .json открывается двойным кликом.
  • Notepad++ — бесплатный редактор для Windows с плагином форматирования JSON.
  • Firefox и Chrome — браузеры рендерят JSON-файлы как интерактивное дерево: объекты и массивы можно разворачивать и сворачивать.
  • Excel — через «Данные → Получить данные → Из файла → JSON»; подходит для табличных структур.

Visual Studio Code подсвечивает JSON нативно, отображает ошибки в реальном времени и справляется с большими конфигурационными файлами и ответами API — это рекомендованный инструмент для повседневной работы.

Синтаксические правила и валидация JSON

Одна опечатка делает весь JSON-документ невалидным. Парсер не восстанавливает повреждённые данные — он выдаёт ошибку и останавливается. Проверка работает на двух уровнях: синтаксис (структура правильная?) и схема (данные соответствуют ожидаемому формату?).

Четыре правила well-formed JSON

Согласно RFC 8259, корректный JSON-документ должен выполнять четыре правила:

Инфографика: четыре правила валидного JSON-документа

  1. Данные — это пары «ключ:значение» внутри объекта или элементы внутри массива.
  2. Разделитель — запятая, без запятой после последнего элемента.
  3. Объект заключён в { }, массив — в [ ].
  4. Строки — только в двойных кавычках: одинарные кавычки не допускаются.

Типичные синтаксические ошибки, которые ломают парсинг JSON:

  • лишняя запятая после последнего ключа: {«name»: «Иван»,};
  • ключ без двойных кавычек- лишняя запятая после последнего ключа: {«name»: «Иван»,};
  • ключ без двойных кавычек: {name: «Иван»};
  • одинарные кавычки: {‘name’: ‘Иван’}.

Проверить JSON онлайн можно на jsonlint.com или через w3schools JSON Validator. В VS Code ошибки подсвечиваются красным автоматически — ещё до запуска кода.

JSON Schema: валидация структуры данных

JSON Schema — описание правил структуры JSON-документа: какие поля обязательны, какой у них тип, какие ограничения по значению.

Три основных сценария применения:

  • Валидация API-запросов — убедиться, что клиент прислал все обязательные поля нужных типов.
  • Проверка перед записью в базу данных — защита от некорректных или вредоносных данных.
  • Автогенерация документации — инструменты вроде Swagger и OpenAPI читают JSON Schema.

Для валидации по схеме используют Ajv в JavaScript и jsonschema в Python. Пример схемы:

{

«type»: «object»,

«properties»: {

«name»: { «type»: «string» },

«age»: { «type»: «integer», «minimum»: 0 }

},

«required»: [«name», «age»]

}

Актуальная распространённая версия стандарта — JSON Schema Draft-07. JSON Schema не входит в RFC 8259 — это отдельная спецификация, развивающаяся поверх основного формата.

Онлайн-инструменты для работы с JSON

Онлайн-инструменты удобны для быстрой проверки и форматирования JSON прямо в браузере — без переключения в IDE (интегрированную среду разработки).

Инструмент
Функция
Бесплатно
jsonlint.com Валидация синтаксиса и подсветка ошибок Да
jsonformatter.org Форматирование, минификация, tree-view Да
jsondiff.com Сравнение двух JSON-документов Да
w3schools JSON Validator Валидация с объяснением ошибок Да

Типичный сценарий: скопировали ответ API → вставили в форматировщик → получили JSON с отступами и понятной структурой. Или сравниваете две версии конфигурационного файла через diff-инструмент перед деплоем (развёртыванием приложения).

Postman — инструмент для тестирования REST API — содержит встроенный форматировщик JSON и поддерживает JSONPath-фильтры: можно извлечь конкретное поле из ответа прямо в интерфейсе без написания дополнительного кода.

Безопасность при работе с JSON

JSON кажется безопасным форматом — это просто текст. Но данные из JSON нередко попадают в браузер, SQL-запросы или базу данных без должной проверки. Три основных угрозы:

Три угрозы безопасности JSON: инъекция, скриптовая атака, SQL

JSON Injection. Атака, при которой злоумышленник вставляет в JSON-запрос поле «isAdmin»: true. Если сервер не проверяет структуру входящих данных, пользователь получает права администратора. Защита: валидация через JSON Schema с помощью Ajv или jsonschema — схема отклонит любое поле, не входящее в белый список.

Межсайтовый скриптинг (XSS, Cross-Site Scripting). Если значение из JSON вставляется в DOM (объектную модель документа) через innerHTML, браузер может выполнить вредоносный скрипт, встроенный в строку. Защита: использовать textContent вместо innerHTML; обрабатывать ненадёжный ввод через DOMPurify — библиотеку санитизации (очистки) HTML.

SQL-инъекции через JSON. Данные из JSON-поля без экранирования попадают в SQL-запрос и изменяют его логику. Защита: параметризованные запросы (prepared statements) — никогда не вставляйте значения из JSON в SQL-строку через конкатенацию.

Общее правило: любые данные, пришедшие от клиента в формате JSON, считаются ненадёжными. Ajv, DOMPurify и prepared statements закрывают большинство векторов атак.

Часто задаваемые вопросы

Чем JSON отличается от XML?

JSON компактнее XML: в XML название поля дублируется в открывающем и закрывающем теге — <name>Иван</name>, в JSON — один раз: «name»: «Иван». При передаче тысяч записей разница в весе ощутима. JSON быстрее передаётся по сети и проще разбирается. XML остаётся обязательным в SOAP и унаследованных банковских системах, где требуется сложная структура с атрибутами тегов.

Можно ли добавлять комментарии в JSON?

Нет. Стандартный JSON не поддерживает комментарии — это требование RFC 8259. Если комментарии нужны при разработке, используйте JSON5 (устанавливается через npm install json5): он допускает // и /* */, одинарные кавычки и завершающие запятые. Но JSON5 несовместим с парсерами стандартного JSON — не применяйте его в production API.

Как конвертировать JSON в Excel?

Для небольших файлов подойдёт онлайн-сервис csvjson.com. В Excel — «Данные → Получить данные → Из файла → JSON». В Python через pandas: pd.read_json(‘file.json’).to_excel(‘file.xlsx’). Для автоматизации и больших объёмов выбирайте pandas: он гибче и работает в пакетном режиме.

Чем JSONB в PostgreSQL отличается от JSON?

JSONB — двоичный (бинарный) тип PostgreSQL: данные разбираются при записи, хранятся в структурированном виде и поддерживают GIN-индексы (обобщённые инвертированные индексы). Тип JSON хранит данные как текст и разбирает их при каждом запросе. Выбирайте JSONB, если часто ищете или фильтруете по вложенным полям — это ускоряет выборку на порядки.

Что такое JSONPath и как его использовать?

JSONPath — язык запросов к JSON-структурам, аналог XPath для XML. Синтаксис: $ — корень документа, .field — поле объекта, [N] — элемент массива по индексу. Пример: $.user.name — извлечь имя пользователя из вложенного объекта. JSONPath используется в Postman для извлечения значений из ответов API и в тестовых фреймворках для автоматических проверок результатов.

Как проверить правильность JSON-файла?

Онлайн: jsonlint.com или w3schools JSON Validator — вставляете JSON, нажимаете «Validate». В VS Code встроенная проверка подсвечивает ошибки автоматически. В JavaScript оберните JSON.parse() в блок try/catch; в Python — json.loads() выбрасывает исключение JSONDecodeError при синтаксической ошибке. Частая причина ошибки — лишняя запятая после последнего элемента объекта или массива.

Чем JSON5 отличается от стандартного JSON?

JSON5 расширяет синтаксис: разрешены комментарии (// и /* */), одинарные кавычки, завершающие запятые, ключи без кавычек, значения Infinity и NaN. Устанавливается через npm install json5. JSON5 удобен в конфигурационных файлах при разработке, но несовместим с парсерами стандартного JSON — не используйте в production REST API.

Как JSON применяется в REST API?

Клиент отправляет HTTP-запрос с заголовком Content-Type: application/json и телом в формате JSON. Сервер возвращает ответ тоже в JSON. Перед отправкой объект сериализуется — JSON.stringify() в JavaScript, json.dumps() в Python, — после получения десериализуется. REST API предпочитает JSON перед XML из-за меньшего размера, простоты парсинга и нативной поддержки в браузере.

Что такое сериализация и десериализация JSON?

Сериализация — преобразование объекта в памяти в JSON-строку для передачи или хранения: JSON.stringify() в JavaScript, json.dumps() в Python. Десериализация — обратный процесс: строка разбирается в объект — JSON.parse() в JavaScript, json.loads() в Python. Оба процесса выполняются встроенными средствами без сторонних библиотек.

Можно ли хранить данные в JSON-файле без базы данных?

Да — для небольших проектов и конфигурационных файлов это удобно. Чтение в Node.js: JSON.parse(fs.readFileSync(‘data.json’, ‘utf-8’)). В Python: json.load(f) внутри блока with open(). При росте объёма данных или необходимости сложных выборок переходите на PostgreSQL с типом JSONB — он поддерживает GIN-индексы и ускоряет поиск по вложенным полям JSON.

Подайте заявку —
забронируйте место в группе

45 000 мест на 2026 год. Бесплатное обучение по федеральному проекту «Активные меры содействия занятости»

  • Онлайн
  • От 2 месяцев
  • Бесплатно
  • Диплом
Учиться бесплатно
icon