раздел 04 · подстраница 1

JSON или CSV: что выбрать

Оба - текстовые файлы, оба хранят данные, оба читаются любым языком. Новичка это путает: когда брать что? Ответ упирается в одну вещь - форму ваших данных. Плоская таблица или дерево.

Главное различие за минуту

CSV - это таблица. Строки и столбцы, как в Excel. Каждая запись - одна строка с фиксированным набором полей.

JSON - это дерево. Внутри значения может быть список или ещё один объект, а внутри него - ещё. Вложенность любой глубины.

Возьмём одни и те же данные о человеке.

В CSV (плоско, одна запись - одна строка):

name,age,city
Анна,28,Москва

В JSON (с вложенностью - несколько телефонов, адрес объектом):

{
  "name": "Анна",
  "age": 28,
  "address": { "city": "Москва", "street": "Ленина", "house": 1 },
  "phones": ["+7900...", "+7901..."]
}

Заметьте: в CSV для address и phones пришлось бы городить костыли. В JSON это естественно.

Таблица сравнения

| | CSV | JSON | | --- | --- | --- | | Форма данных | плоская таблица | дерево, вложенность | | Типы (число, bool) | нет, всё текст | да | | Списки внутри записи | нет | да | | Открыть в Excel | да | нет | | Размер файла | компактнее | многословнее | | Где живёт | выгрузки, аналитика | API, конфиги, веб |

Когда брать CSV

  • Данные однотипные и плоские: список клиентов, транзакций, товаров.
  • Их будут открывать в Excel или Google Sheets люди.
  • Это выгрузка для аналитики или импорт в другую систему.
  • Записей много, и важна компактность.

Когда брать JSON

  • У данных есть вложенность: объекты внутри объектов, списки.
  • Важны типы: числа, true/false, null.
  • Данные передаются по сети между программами (API).
  • Это конфиг или настройки приложения.

Их можно сочетать

Это не вечная вражда. Часто CSV используют для выгрузки таблицы наружу, а внутри программы данные живут как JSON или в базе. Бывает и так: основные данные плоские (CSV), а к ним сбоку - JSON-конфиг с настройками. Выбирайте формат под конкретную задачу, а не «раз и навсегда».

Антипаттерны

  • Тащить вложенность в CSV через самодельные разделители внутри клетки. Вы переизобретаете JSON, только криво.
  • Гнать табличную аналитику через JSON, когда заказчик живёт в Excel. Дайте людям CSV, который открывается двойным кликом.
  • Спорить «что лучше вообще». Лучше - то, что подходит форме данных. У них разные задачи.