Как преобразовать JSON в CSV с понятными колонками

Выбрать колонки, delimiter, newline и прочитать needs_review

Объекты распределяются по ячейкам таблицы как образ преобразования JSON в CSV

JSON можно превратить в CSV, когда заранее известно, что означает одна строка и какие значения входят в колонки. В Neraviko для этого нужен непустой массив однотипных записей. Конвертер не объединяет разные схемы автоматически: отсутствие поля нельзя незаметно подменить пустой ячейкой.

Подготовьте таблицу до конвертации

Для режима с заголовком каждая запись должна быть объектом с одинаковым набором ключей. Порядок ключей внутри следующих объектов может различаться: порядок CSV-колонок задаёт первый объект. Поэтому именно первую запись нужно расположить в согласованном с получателем порядке.

Если таблице не нужен заголовок, отключите include_header и передайте массив массивов одинаковой ширины. Массив объектов при выключенном заголовке не подходит: это другая форма входа. Объекты или массивы внутри ячеек тоже не подходят — сначала выберите явную схему разворачивания.

Проверенный пример

Все данные ниже синтетические. Они не относятся к реальным пользователям или товарам. Откройте JSON → CSV и вставьте:

[{"code":"001","name":"Лист, синий","active":true},{"active":false,"name":"Лист \"А\"","code":"002"}]

Настройки примера: delimiter=comma, include_header=true, line_ending=lf, trailing_newline=false, spreadsheet_safe=true. Ожидаемый результат:

code,name,active
001,"Лист, синий",true
002,"Лист ""А""",false

Этот результат проверен вызовом локальной операции json.to_csv версии 1. Запятая внутри имени остаётся в одной ячейке благодаря кавычкам. Внутренняя кавычка удваивается. Такие правила описаны в RFC 4180, раздел 2 — документ опубликован в октябре 2005 года, проверен 05.10.2026.

Ответ имеет status=needs_review и предупреждение CSV_TYPED_VALUES_SERIALIZED: логические значения стали CSV-текстом. Это пригодный результат, требующий проверки последующего импорта. Строка 001 остаётся строковым содержимым файла, но табличная программа при открытии может назначить колонке числовой тип. Настройте тип колонки у получателя.

Согласуйте разделитель и пустые значения

Доступны именованные разделители comma, semicolon, tab, pipe. Настройка должна совпадать с импортёром, а не с привычкой автора выгрузки. Для переводов строк можно выбрать lf или crlf и отдельно решить, нужен ли перевод строки после последней записи.

JSON null записывается текстом из null_value; по умолчанию это пустая строка. Если исходные данные содержат и null, и "", получатель без отдельного соглашения их уже не различит. Маркер NULL помогает только тогда, когда обычные строковые значения не используют тот же маркер. При сериализации null появляется CSV_NULL_VALUES_SERIALIZED.

Числа и логические значения теряют информацию о типе. Не рассчитывайте, что обратное преобразование восстановит типы: CSV → JSON в Neraviko возвращает строки. Для обмена типизированными данными оставьте JSON либо приложите явный контракт импорта.

Отсутствующее поле и пустое значение — разные случаи

Перед экспортом сравните наборы ключей всех объектов. Если у первой записи есть active, а у второй этого ключа нет, конвертер не допишет колонку автоматически. Сначала решите, допустим ли пропуск по модели данных. Если допустим, подготовьте одинаковые поля у всех записей с согласованным значением; если нет, исправьте источник. Нельзя выбирать null только для прохождения проверки: это отдельный смысл.

Для маленькой пробной выгрузки составьте список ожидаемых пар «идентификатор — значение». После импорта проверьте не только количество строк, но и то, что значения попали под правильные заголовки. Переставленные колонки могут дать успешную загрузку с неверными данными.

У первого объекта тоже есть границы: пустой объект не задаёт полезную таблицу, а пустой верхний массив не содержит строк для экспорта. Если данных пока нет, передавайте отсутствие выгрузки по контракту получателя, а не создавайте фиктивную строку ради CSV-файла.

Проверьте результат перед передачей

  • Вход — непустой массив; все строки имеют один набор колонок.
  • Первую запись используют как образец порядка заголовков.
  • Разделитель, окончания строк и null_value согласованы с получателем.
  • В файле правильно читаются запятые, кавычки и ведущие нули.
  • Предупреждения просмотрены; защита формул оставлена включённой для просмотра в таблицах.
  • Пробный импорт сравнен с исходными данными по количеству записей и ключевым значениям.

Операция имеет лимит запроса 262 144 байта; CSV-экспорт ограничен 5 000 строками и 256 колонками. Это серверная обработка: текст отправляется сервису. Контракт операции исключает сохранение и логирование сырых входов и выходов по умолчанию, но это не означает работу только в браузере. Для проверки используйте искусственные данные; конфиденциальную выгрузку обрабатывайте в согласованной среде.