раздел 01

JSON

JSON (произносится «джейсон») - это формат, в котором данные записывают так, чтобы их легко читала программа. Расшифровка - JavaScript Object Notation, но к JavaScript привязки нет: JSON используют все языки.

В основе - простая идея: данные это набор пар ключ и значение. Слева название, справа его смысл.

Из чего состоит

JSON собирается из трёх вещей:

  • Пары ключ-значение - название в кавычках, двоеточие, значение. Например имя и его смысл.
  • Массивы - список значений по порядку, в квадратных скобках.
  • Вложенность - значением может быть другой объект или массив, и так в глубину.

Вот как выглядит небольшой объект с вложенностью и массивом:

{
  "name": "Иван",
  "age": 30,
  "active": true,
  "skills": ["python", "sql"],
  "address": {
    "city": "Москва",
    "zip": "101000"
  }
}

Как это читать

Читается сверху вниз, как анкета. Фигурные скобки - это объект (один набор данных про что-то одно). Внутри - строки вида ключ: значение. Значением бывает текст в кавычках, число без кавычек, true или false, или вложенный блок.

Квадратные скобки - это список. В примере выше skills это список из двух строк. Блок address - вложенный объект: данные внутри данных.

Фигурные скобки - объект (анкета). Квадратные скобки - список. Кавычки - всегда у текста. Это вся грамматика, которую нужно держать в голове.

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

Ответы API
Сервис отдаёт данные в JSON: программа их разбирает и показывает у вас на экране.
Конфиги
Настройки приложений и инструментов часто лежат в JSON-файлах, например package.json.
Настройки
Редакторы, агенты и сервисы хранят параметры в JSON: ключи, лимиты, флаги.

Частые ошибки

JSON строгий: одна мелочь ломает весь файл. Самые частые ловушки:

  • Лишняя запятая в конце последнего элемента. После последней пары запятая не ставится.
  • Кавычки. Текст и ключи - только в двойных кавычках. Одинарные кавычки JSON не понимает.
  • Незакрытая скобка - каждой открытой { или [ нужна закрывающая.

Сравните: слева сломано, справа правильно.

{
  "city": "Москва",
  "zip": "101000",
}
{
  "city": "Москва",
  "zip": "101000"
}