Данные · 2 мин чтения ·
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"""