JSON
JavaScript Object Notation · формат обмена данными
Что это
JSON (JavaScript Object Notation) — текстовый формат обмена структурированными данными. Основан на синтаксисе объектов JavaScript, но независим от языка — есть парсеры для всех современных языков.
История
- Придуман Дугласом Крокфордом в начале 2000-х как минималистичная замена XML
- Первая формальная спецификация — 2001, json.org
- Стандартизован в RFC 4627 (2006), потом RFC 8259 (2017)
- Стал де-факто стандартом веб-API
Синтаксис
{
"name": "Alice",
"age": 30,
"isAdmin": true,
"tags": ["admin", "user"],
"address": {
"city": "Moscow",
"zip": "101000"
},
"note": null
}
Типы данных
- string — в двойных кавычках, поддерживает escape (
\n,\",\u00E9) - number — целые и вещественные, без leading zeros
- boolean —
true/false - null — специальное значение «ничто»
- array —
[ ... ], упорядоченный список - object —
{ "key": value, ... }, пары ключ-значение
Правила
- Ключи объекта — всегда строки в двойных кавычках
- Одинарные кавычки — не разрешены (в отличие от JS)
- Комментарии — не поддерживаются (это боль)
- Trailing comma — не допускается (тоже боль)
Примеры использования
- REST-API (ответы, тела запросов)
- Конфиги (
package.json,tsconfig.json,.eslintrc.json) - Хранение данных в файлах и БД (JSONB в Postgres)
- Web-tokens (JWT содержит base64-JSON внутри)
Вариации
- JSON5 — расширение с комментариями, trailing comma, hex
- JSONC — JSON с комментариями (Microsoft, VS Code)
- NDJSON / JSONL — «один JSON на строку», удобно для потоковой обработки
- BSON — бинарный JSON (MongoDB)
Инструменты
jq— CLI для парсинга и фильтрации JSON- JSON Schema — способ описать структуру и валидировать