Как перевести CSV в JSON и не потерять данные по дороге

4 сентября 2026 г.

Классика интеграционной жизни: бэкенду нужен JSON, а из учётной системы приходит CSV-выгрузка. Или наоборот — аналитик просит «таблицу в экселе», а у вас массив объектов. Задача решается за минуту, если знать две-три ловушки формата, из-за которых данные обычно и «теряются».

Что такое CSV — и почему он коварен

CSV — это таблица в текстовом виде: каждая строка — запись, значения внутри строки разделены запятой. Выглядит примитивно, но именно примитивность создаёт проблемы: у формата нет единого стандарта, и «тот же CSV» в разных программах выглядит по-разному.

  • Разделитель. Русский Excel по умолчанию ставит точку с запятой, потому что запятая у нас занята десятичной дробью. Английские системы ждут запятую. Файл «не парсится» чаще всего именно поэтому.
  • Кавычки. Если внутри значения есть запятая или перенос строки, значение оборачивают в кавычки. Парсеры без поддержки кавычек режут такие строки пополам.
  • Ведущие нули. Артикул «0042» Excel радостно превращает в число 42 — и он уже не совпадает с артикулом в другой системе.
  • Даты. «03.09» Excel может молча превратить в дату текущего года.
Прежде чем что-то конвертировать, откройте CSV в блокноте, а не в Excel. В блокноте видно, какой там на самом деле разделитель и есть ли кавычки. Excel показывает «своё» представление, а не содержимое файла.

Конвертация в JSON за минуту

Скопируйте содержимое файла и вставьте в конвертер CSV в JSON. Выберите разделитель (запятая или точка с запятой) и укажите, что первая строка — заголовки: она станет ключами объектов. На выходе получится аккуратный массив объектов, который можно сразу проверить в форматтере JSON — о том, как читать и валидировать JSON, у нас есть отдельная статья.

Что получается на выходе
CSV:
sku;name;price
0042;Стул;3500

JSON:
[ { "sku": "0042", "name": "Стул", "price": "3500" } ]

Обратная дорога: JSON в CSV

Когда JSON нужно показать человеку в таблице, выручает конвертер JSON в CSV: он «расплющит» массив объектов по колонкам. Один нюанс — если объекты неоднородные (у одних есть поле, у других нет), у части строк колонка останется пустой, это нормально.

Читайте также