Данные · 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 закрывают другие частые случаи. Для быстрой проверки сначала вставьте несколько записей, посмотрите на столбцы, а потом конвертируйте весь файл.

Открыть конвертер JSON в CSV

LinkedInXFacebook