Данные

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, чтобы заметить ошибки на раннем этапе.

  • Убедитесь, что первая строка — заголовок, а разделитель действительно запятая (точка с запятой и табуляция встречаются часто).
  • Коды, в которых важны ведущие нули, оставляйте строками.
  • Сначала уберите пробелы вокруг ячеек и пустые строки — поможет инструмент удаления пробелов.
  • Проверьте, что число строк после конвертации совпадает с исходным. Расхождение обычно означает проблему с кавычками или переводами строк.

Попробуйте с этими инструментами

Другие руководства

Все руководства