Данные · 3 мин чтения ·
JSON в CSV без потери единого поля
Вложенные ключи, необязательные поля и запятые внутри строк: как 4Dev превращает запутанный JSON в CSV, готовый для таблицы.

Таблица плоская, а JSON нет. Любая конвертация JSON в CSV должна решить, что делать с вложенными объектами, массивами и ключами, которые есть только у части записей. Вот что именно делает конвертер 4Dev.
У каждого ключа своя колонка
Строка заголовков собирается из ключей всех объектов в порядке их первого появления, а не только из первой записи. Запись, в которой нет какого-то ключа, получает пустую ячейку, поэтому колонки не съезжают, а необязательные поля не пропадают.
[{"id":1,"name":"Ada"},
{"id":2,"name":"Alan","note":"optional"}]
id,name,note
1,Ada,
2,Alan,optional
Вложенные объекты становятся колонками с подчёркиванием
Объекты разворачиваются: их ключи соединяются через подчёркивание, и {"address":{"city":"Lisbon"}} превращается в колонку address_city. Массив простых значений попадает в одну ячейку ("admin, dev"), а массив объектов сохраняется в ячейке как текст JSON, так что ничего не теряется.
Запятые и кавычки экранируются автоматически
Любое значение с запятой, двойной кавычкой или переносом строки заключается в двойные кавычки, а внутренние кавычки удваиваются. Это стандартное правило CSV, которого ждут Excel и Google Таблицы.
2,"Alan, T.","says ""hi"""
Открываем CSV в Excel
У CSV нет собственных настроек, поэтому Excel угадывает. Чаще всего ломаются две вещи. В странах, где десятичным разделителем служит запятая, в том числе в России, Excel ждёт точку с запятой между столбцами и может засунуть всю строку в одну ячейку. А кириллица, иврит или эмодзи превращаются в странные символы, если файл открыт в локальной кодировке вместо UTF-8. В обоих случаях используйте в Excel Данные → Из текстового/CSV-файла, выберите UTF-8 и разделитель «запятая», и столбцы встанут на место.
Ведущие нули и длинные числа
Таблицы считают числом всё, что похоже на число. Индекс вроде 01234 теряет ведущий ноль, а 16-значный идентификатор вроде 1234567890123456 округляется и отображается как 1,23457E+15. Сам CSV при этом правильный; вред происходит, когда его открывает Excel. Импортируйте такие столбцы как текст, а длинные идентификаторы передавайте в JSON строками ("id": "1234567890123456"), чтобы любой инструмент сохранил их в точности.
Массивы внутри записей
Массивы — самая сложная часть любой конвертации: в одной записи может быть много значений, а в строке CSV одна ячейка на столбец. Если разнести их по нескольким строкам, повторятся все остальные поля, а если по пронумерованным столбцам (tags_1, tags_2…), у каждого файла будет свой заголовок. Когда список простых значений хранится в одной ячейке, а массив объектов — в виде JSON-текста, каждая запись остаётся ровно одной строкой, и исходные данные при необходимости можно восстановить.
Проверьте результат, прежде чем делиться
- Число строк совпадает с числом записей в JSON-массиве.
- В заголовке есть все ожидаемые поля, включая необязательные.
- Вложенные поля превратились в столбцы с подчёркиванием, например address_city.
- Значения с запятыми, кавычками или переносами строк остались в одной ячейке.
Нужна таблица или обратное направление?
Конвертер JSON в CSV от 4Dev каждый раз применяет одни и те же правила «уплощения», а инструменты JSON в Excel и CSV в JSON закрывают другие частые случаи. Для быстрой проверки сначала вставьте несколько записей, посмотрите на столбцы, а потом конвертируйте весь файл.