Как перевести CSV в JSON и не потерять данные по дороге
Классика интеграционной жизни: бэкенду нужен JSON, а из учётной системы приходит CSV-выгрузка. Или наоборот — аналитик просит «таблицу в экселе», а у вас массив объектов. Задача решается за минуту, если знать две-три ловушки формата, из-за которых данные обычно и «теряются».
Что такое CSV — и почему он коварен
CSV — это таблица в текстовом виде: каждая строка — запись, значения внутри строки разделены запятой. Выглядит примитивно, но именно примитивность создаёт проблемы: у формата нет единого стандарта, и «тот же CSV» в разных программах выглядит по-разному.
- Разделитель. Русский Excel по умолчанию ставит точку с запятой, потому что запятая у нас занята десятичной дробью. Английские системы ждут запятую. Файл «не парсится» чаще всего именно поэтому.
- Кавычки. Если внутри значения есть запятая или перенос строки, значение оборачивают в кавычки. Парсеры без поддержки кавычек режут такие строки пополам.
- Ведущие нули. Артикул «0042» Excel радостно превращает в число 42 — и он уже не совпадает с артикулом в другой системе.
- Даты. «03.09» Excel может молча превратить в дату текущего года.
Конвертация в JSON за минуту
Скопируйте содержимое файла и вставьте в конвертер CSV в JSON. Выберите разделитель (запятая или точка с запятой) и укажите, что первая строка — заголовки: она станет ключами объектов. На выходе получится аккуратный массив объектов, который можно сразу проверить в форматтере JSON — о том, как читать и валидировать JSON, у нас есть отдельная статья.
CSV:
sku;name;price
0042;Стул;3500
JSON:
[ { "sku": "0042", "name": "Стул", "price": "3500" } ]Обратная дорога: JSON в CSV
Когда JSON нужно показать человеку в таблице, выручает конвертер JSON в CSV: он «расплющит» массив объектов по колонкам. Один нюанс — если объекты неоднородные (у одних есть поле, у других нет), у части строк колонка останется пустой, это нормально.