Как конвертировать вложенный JSON в CSV: три главных параметра

Преобразование иерархических структур в табличный вид регулируется тремя факторами: форматом входного массива, символом-разделителем и состоянием режима «плоский». Для решения этой задачи используется конвертер JSON в CSV на платформе Zyntec. Сервис считывает объекты, анализирует ключи и формирует плоскую таблицу по заданным правилам.

Входные данные передаются через обязательное поле «json». Инструмент рассчитан на работу с массивом объектов. Если на вход подан единичный объект, внутри которого находится единственный ключ со вложенным массивом, сервис автоматически извлечет и обработает этот внутренний массив. Если массив содержит не объекты, а простые примитивы (числа или строки), конвертер запишет их в одну общую колонку с заголовком value.

Разбор доступных разделителей

Поле «разделитель» определяет символ, который будет отделять колонки друг от друга в готовом файле. Выбор зависит от того, где именно планируется открывать готовую таблицу:

  • Запятая (по умолчанию). Стандартный вариант для формата CSV. Подходит для большинства систем аналитики, баз данных и англоязычных табличных процессоров.
  • Точка с запятой. Оптимальный выбор, если строковые значения внутри самого JSON содержат запятые или если файл будет открываться в программах с европейской или русскоязычной локализацией, где запятая служит десятичным разделителем.
  • Табуляция. Превращает итоговые данные в формат TSV. Удобна для прямой вставки в текстовые редакторы без искажения строк.
  • Вертикальная черта (|). Используется для выгрузки в базы данных или терминальные утилиты, где символы запятой и точки с запятой часто встречаются внутри текстового контента.
Разделитель Символ Когда применять
Запятая , Стандартный экспорт, совместимость с веб-сервисами
Точка с запятой ; Тексты с запятыми, русскоязычные редакторы таблиц
Табуляция \t Экспорт в TSV, копирование через буфер обмена
Вертикальная черта \| Сложный контент с обилием знаков препинания

Режим «плоский»: отличия значений 1 и 0

Параметр «плоский» принимает значения 1 или 0 (по умолчанию установлено 1). Он отвечает за то, как инструмент обрабатывает вложенные структуры и списки.

Режим 1 (активен)

При включенном режиме конвертер полностью разворачивает вложенность:

  1. Вложенные объекты раскладываются в точечные пути. Например, объект {"address": {"city": "Москва"}} преобразуется в колонку с заголовком address.city и значением Москва.
  2. Массивы собираются в отдельную колонку вида ключ[]. Значения массива склеиваются внутри одной ячейки через запятую. Например, список "tags": ["crm", "lead"] превратится в заголовок tags[] и значение crm, lead.

Режим 0 (отключен)

Если отключить плоский режим (установить 0), разворачивание путей отключается. Вложенные объекты и массивы сохраняются в ячейке в виде сырой JSON-строки. Например, в ячейке под заголовком address останется текст {"city":"Москва"}, а под заголовком tags - текст ["crm","lead"]. Это удобно, если сложный блок данных нужно передать в исходном виде для последующего парсинга.

Правила построения заголовков и пустые ячейки

Заголовки таблицы формируются как объединение всех уникальных ключей, встречающихся во всех объектах переданного массива. Порядок строк при этом строго сохраняется.

Если структура объектов неоднородна, инструмент действует по следующей логике:

  • Если у первого объекта есть поля id и name, а у второго - id, name и email, в CSV появится три заголовка: id, name, email.
  • Для первого объекта в колонке email останется пустое место (два разделителя подряд без пробела).
  • Если плоский режим включен, точечные пути от разных объектов также попадают в общий список колонок, а отсутствующие свойства остаются пустыми ячейками.

Ограничения и сообщения об ошибках

Перед обработкой сервис проверяет валидность данных. При нарушении формата появляются уведомления:

  • «Вставьте JSON-массив объектов» - поле ввода оставлено пустым.
  • «Ошибка JSON: …» - текст содержит синтаксическую ошибку (пропущенная кавычка, лишняя запятая, незакрытая скобка).
  • «Ожидается JSON-массив объектов» - передан единичный примитив, пустой фрагмент неверного типа или структура, которую невозможно привести к массиву.

Если структура содержит глубокие уровни взаимной вложенности или массивы, состоящие из других объектов, рекомендуется предварительно упростить JSON или разделить большую структуру на логические части перед отправкой в форму.

Пример работы: до и после

Входной фрагмент с вложенным объектом и массивом:

[
  {"id": 101, "name": "Сервер", "info": {"ram": 16}, "roles": ["db", "web"]},
  {"id": 102, "name": "Шлюз", "info": {"ram": 8}, "ip": "192.168.1.1"}
]

Результат работы с разделителем «точка с запятой» и параметром «плоский» = 1:

id;name;info.ram;roles[];ip
101;Сервер;16;db, web;
102;Шлюз;8;;192.168.1.1

Все вложенные параметры преобразованы в отдельные столбцы, список roles преобразован в колонку roles[], а для отсутствующих свойств сформированы пустые ячейки.

Читайте также