CSV или JSON: когда что использовать и на что смотреть при конвертации
Чтобы отправить выгрузку из таблицы в API или открыть ответ API в Excel, нужно конвертировать между CSV и JSON. Если знать различия форматов, данные не испортятся по дороге.
Таблица против дерева
CSV (Comma-Separated Values) — это таблица. В первой строке названия столбцов, каждая следующая строка — запись, значения разделены запятыми. Это самый простой и лёгкий способ хранить плоские данные, где у каждой строки одинаковые столбцы.
JSON — это дерево. Объекты могут содержать массивы, а те — другие объекты, поэтому иерархические данные вроде «один заказ с несколькими товарами» выражаются естественно. Цена — размер, ведь названия ключей повторяются в каждой записи.
name,city,score
Kim,Seoul,92
Lee,Busan,85
[
{"name": "Kim", "city": "Seoul", "score": 92},
{"name": "Lee", "city": "Busan", "score": 85}
]
Что выбрать
Отсутствие типов в CSV имеет значение. Сохраните в CSV код вроде 012345, и Excel может прочитать его как число и отбросить ведущий ноль; длинные номера карт или заказов могут превратиться в экспоненциальную запись вроде 1,23E+15.
- Данные, которые люди будут открывать и править в Excel или Google Таблицах: CSV.
- Сотни тысяч строк простых логов или статистики: CSV (компактно и удобно обрабатывать построчно).
- Запросы и ответы веб-API: JSON.
- Иерархические данные со списками внутри записей: JSON.
- Когда нужно различать числа, логические значения и null: JSON (в CSV всё — текст).
Запятые и кавычки: правила экранирования CSV
Что, если значение содержит запятую? RFC 4180 предписывает заключать его в двойные кавычки: "Moscow, Russia". Двойная кавычка внутри значения экранируется удвоением, поэтому He said "hi" превращается в "He said ""hi""". Переводы строк внутри значения допустимы, если оно в кавычках.
Код, который просто вызывает split(','), игнорирует эти правила, и столбцы съезжают, как только появляется столбец с адресом или примечаниями. Всегда обрабатывайте CSV парсером или конвертером, соблюдающим стандарт.
Почему Excel искажает кириллицу
Если дважды щёлкнуть CSV в UTF-8 в Excel для Windows, кириллица или азиатские символы часто превращаются в «кракозябры». Без метки порядка байтов (BOM) UTF-8 Excel угадывает кодировку и откатывается к устаревшей системной (например, Windows-1251).
Либо сохраните файл в UTF-8 с BOM, либо в Excel используйте «Данные → Из текстового/CSV-файла» и явно выберите UTF-8. И наоборот: когда программа читает файл с BOM, проверьте, не прибавился ли невидимый символ перед названием первого столбца.
Как превратить вложенный JSON в плоский CSV
Чтобы превратить дерево в таблицу, нужно соглашение. Распространённый вариант — соединять путь точками: {"user": {"name": "Kim"}} становится столбцом user.name.
С массивами сложнее. Если в заказе три товара, можно создать три строки или сохранить товары одной JSON-строкой в одном столбце. Дополнительные строки удобны для анализа, а столбец с JSON-строкой — для сохранения исходных данных.
Чек-лист перед конвертацией
Конвертируйте в конвертере CSV ↔ JSON от AIBIZAP, а затем проверьте структуру в форматировщике JSON, чтобы заметить ошибки на раннем этапе.
- Убедитесь, что первая строка — заголовок, а разделитель действительно запятая (точка с запятой и табуляция встречаются часто).
- Коды, в которых важны ведущие нули, оставляйте строками.
- Сначала уберите пробелы вокруг ячеек и пустые строки — поможет инструмент удаления пробелов.
- Проверьте, что число строк после конвертации совпадает с исходным. Расхождение обычно означает проблему с кавычками или переводами строк.