Что такое JSON
JSON (JavaScript Object Notation) — это текстовый формат обмена данными, основанный на синтаксисе объектов JavaScript, но независимый от языка. Он поддерживается практически всеми языками программирования и широко используется для передачи данных между сервером и клиентом, а также для хранения конфигураций и настроек.
Как это работает
JSON использует две универсальные структуры данных, которые есть в большинстве языков:
- Коллекции пар ключ/значение — в разных языках реализуются как объекты, записи, структуры, словари, хеш-таблицы.
- Упорядоченные списки значений — обычно это массивы, векторы или списки.
Эти структуры позволяют представлять сложные иерархические данные. JSON поддерживает следующие типы данных: строки (в двойных кавычках), числа, булевы значения (true/false), null, массивы и объекты. Вложенность объектов и массивов не ограничена, что делает формат гибким для описания практически любых структур.
Пример
{
"имя": "Иван",
"возраст": 30,
"isDeveloper": true,
"навыки": ["JavaScript", "React", "Node.js"],
"контакты": {
"email": "ivan@example.com",
"сайт": "https://ivan.dev"
}
}Здесь видны все основные типы: строки, число, булево значение, массив и вложенный объект. Такой формат легко читается человеком и просто разбирается машиной.
Почему JSON популярен
- Простота для человека и машины — синтаксис интуитивно понятен, а парсеры и генераторы есть в стандартных библиотеках большинства языков.
- Широкая поддержка — JSON используется в веб-API, конфигурационных файлах (например,
package.json), системах обмена сообщениями, базах данных (например, PostgreSQL, MongoDB) и многих других областях. - Эффективность — будучи текстовым, JSON легко сжимается (gzip, brotli), что снижает объём передаваемых данных по сети.
Подводные камни
- Отсутствие комментариев — в стандартном JSON нельзя добавлять комментарии, что усложняет документирование конфигурационных файлов.
- Строгая типизация — числа не должны быть в кавычках, строки — только в двойных кавычках, лишние запятые недопустимы. Ошибки валидации часто возникают из-за этих мелочей.
- Не поддерживает даты и специальные типы — даты обычно передаются строками в ISO-формате, а бинарные данные — через Base64.
- Безопасность — при использовании
evalдля разбора JSON возможны инъекции, поэтому всегда следует использовать встроенные парсеры.
Когда использовать
JSON — оптимальный выбор для обмена данными между клиентом и сервером в REST API, для хранения настроек приложений, для передачи сообщений в микросервисной архитектуре. Он также часто применяется в NoSQL-базах данных и как формат для экспорта/импорта данных. Если требуется высокая производительность парсинга или строгая схема, стоит рассмотреть альтернативы (например, Protocol Buffers или XML со схемой), но для большинства задач JSON достаточно.
Коротко
- JSON — текстовый формат обмена данными, основанный на парах ключ/значение и упорядоченных списках.
- Поддерживает строки, числа, булевы значения,
null, массивы и объекты; вложенность не ограничена. - Популярен благодаря простоте, широкой поддержке в языках и эффективности при передаче по сети.
- Помни о строгих правилах синтаксиса (двойные кавычки, отсутствие комментариев) и используй стандартные парсеры для безопасности.
