
Что такое JSON: формат данных простыми словами
ДБ
Дмитрий Борисенко
Вы открываете ответ какого-нибудь API и видите строку из фигурных скобок, кавычек и запятых. Это JSON — формат, на котором держится обмен данными почти во всём вебе. Разберём, как он устроен, чтобы такая строка перестала выглядеть шифром.
Что это вообще такое
JSON (JavaScript Object Notation) — текстовый формат для хранения и передачи данных. Его придумали в начале 2000-х как простой способ гонять данные между сервером и браузером, и с тех пор он стал стандартом: на JSON отвечают API, в нём пишут конфиги, в нём хранят настройки приложений.
Главная идея — данные записываются как пары «ключ — значение», понятные и человеку, и программе. Вот минимальный пример:
Слева от двоеточия — ключ (всегда строка в двойных кавычках), справа — значение. Программа прочитает это и получит объект с тремя полями. Человек — тоже всё поймёт, и в этом весь смысл формата.
Из чего состоит JSON
В JSON всего два «контейнера» и несколько типов значений.
- Объект — в фигурных скобках
{ }, набор пар «ключ — значение» через запятую. Ключи уникальны, порядок значения не имеет. - Массив — в квадратных скобках
[ ], упорядоченный список значений через запятую.
Значением может быть:
- строка — в двойных кавычках:
"привет"; - число — без кавычек:
42,3.14,-7; - логическое —
trueилиfalse; - null — «ничего», пустое значение;
- вложенный объект или массив — так строится любая глубина.
Собираем всё вместе:
Здесь tags — массив строк, settings — вложенный объект, lastLogin — пустое
значение. Из таких кубиков собирается структура любой сложности.
Где вы его встречаете
- API. Запрашиваете данные у сервера — он почти наверняка отвечает JSON. Список товаров, профиль пользователя, погода — всё приходит в этом формате.
- Конфиги.
package.jsonв Node.js,tsconfig.json, настройки редактора — это всё JSON. - Хранение. Localstorage в браузере, документы в базах вроде MongoDB — данные лежат как JSON или очень близко к нему.
- Токены. JWT — токен авторизации — это те же данные JSON, просто закодированные в base64. Его содержимое можно раскодировать в читаемый JSON и посмотреть, что внутри.
JSON и JavaScript
Хотя в названии есть «JavaScript», JSON — независимый формат, его читают все языки. Но в JS с ним работать особенно удобно, всего две функции:
JSON.parse разбирает текст в объект, JSON.stringify делает обратное. Именно
parse спотыкается, если в JSON закралась ошибка, — и роняет приложение. Поэтому
данные удобно проверить и отформатировать JSON заранее, ещё
до того, как они попадут в код.
Чем JSON отличается от XML и YAML
Одни и те же данные можно записать по-разному. JSON победил XML в вебе за счёт компактности: меньше символов, нет закрывающих тегов.
YAML — другой популярный формат, по сути тот же JSON, но с отступами вместо скобок и с поддержкой комментариев. Его любят за читаемость и потому часто выбирают для конфигов:
Практика такая: JSON — для передачи данных между программами, YAML — для конфигов, которые правят руками. Перевести одно в другое можно за секунду в инструменте — вставьте JSON и откройте вкладку YAML.
Частые ошибки, из-за которых JSON не читается
JSON строгий, и один лишний символ ломает весь файл. Самое частое:
- Висячая запятая — запятая после последнего элемента:
{"a": 1,}. В JSON так нельзя, хотя в JavaScript можно. - Одинарные кавычки. Строки и ключи только в двойных:
'name'невалидно, нужно"name". - Ключ без кавычек.
{name: "Дмитрий"}— это объект JavaScript, но не JSON. Правильно:{"name": "Дмитрий"}. - Незакрытая скобка или кавычка — потеряли
}или", и парсер доходит до конца, не поняв структуру. - Комментарии. В стандартном JSON их нет —
//и/* */сделают файл невалидным.
Ошибку бывает трудно найти глазами в большом файле. Проще вставить данные в валидатор — он покажет строку и колонку, где именно сломалось, а заодно отформатирует и подсветит структуру.
JSON: форматирование, проверка и перевод в YAML
Вставьте JSON или YAML — получите читаемый вид, сжатую версию, перевод между форматами и разбор структуры.
Попробовать
Коротко
- JSON — текстовый формат данных из пар «ключ — значение», объектов
{}и массивов[]. - Строки и ключи — в двойных кавычках; значения — строка, число,
true/false,null, объект или массив. - Это стандарт обмена данными в вебе: API, конфиги, хранилища.
- Строгий синтаксис: висячая запятая, одинарные кавычки и комментарии делают файл невалидным — их ловит проверка.



