JSON в CSV и Excel
Конвертация JSON в таблицу почти всегда сопровождается потерями — вопрос в том, осознанные они или случайные.
Что теряется и почему
- Структура. Плоская таблица не выражает вложенность. Объекты разворачиваются в колонки через точку, и это обратимо только частично.
- Массивы объектов. Список внутри записи — это вторая таблица. В одной колонке он сохранится как текст, но работать с ним будет нельзя.
- Типы. В JSON типы записаны явно. В CSV их нет вовсе, и читающая сторона будет угадывать заново.
- Длинные идентификаторы. Число
78123456789012345при неаккуратной обработке потеряет последние цифры.
Порядок действий
Найти массив с данными. В ответе API он редко лежит в корне — обычно под ключом data, items или result. Если массивов несколько, выбирайте осознанно: иногда нужен как раз маленький справочник, а не большой список записей.
Решить, что делать с вложенностью. Разворачивать в колонки или оставить как есть — зависит от того, нужны ли эти поля в таблице.
Проверить типы. Особое внимание — колонкам с идентификаторами: они должны остаться текстом.
Выгрузить. В XLSX, если файл идёт человеку; в CSV, если его ждёт другая программа; в SQL, если данные едут в базу.
Постраничная выгрузка
API отдаёт данные страницами, и на выходе получается набор файлов с одинаковой обёрткой. Сводить их в одну таблицу вручную утомительно.
Если API умеет отдавать JSON Lines — берите его: страницы склеиваются обычной конкатенацией, и получается один файл, который читается как таблица. Про формат есть отдельная статья.
Если не умеет — обрабатывайте страницы по одной и выгружайте каждую, а объединяйте уже в конечном инструменте.
Проверка результата
Две проверки, которые ловят почти все ошибки конвертации:
- Число строк. Должно совпадать с длиной исходного массива. Расхождение означает, что взят не тот массив или часть записей отфильтрована.
- Выборочная сверка колонок с идентификаторами. Откройте получившийся CSV и убедитесь, что длинные номера не превратились в экспоненту, а коды с нулями сохранили нули.
Частые вопросы
Можно ли выгрузить только часть полей?
Да: скройте ненужные колонки, и в выгрузку попадут только видимые.
Как выгрузить вложенный массив отдельной таблицей?
Сейчас для этого нужен исходный файл и выбор другого массива в «Разборе файла».
Сохранится ли порядок записей?
Да, если не применялась сортировка: строки идут в порядке исходного массива.