Конвертер JSON - CSV: как перевести массив объектов в таблицу и обратно

JSON удобен для API, но не для людей: массив объектов в редакторе читать тяжело. CSV открывается в Excel, LibreOffice и Google Таблицах — с ним удобно работать, фильтровать и передавать коллегам. Конвертер JSON - CSV переводит массив объектов JSON в таблицу и обратно: вложенные объекты разворачиваются в колонки с точкой, разделитель определяется автоматически, числа и true/false распознаются, а защита от CSV-инъекций не даёт ячейке со знаком = стать формулой.

В этой статье разберём, как переводятся вложенные объекты и массивы, что такое CSV-инъекция и почему без защиты файл может быть опасен, как открыть CSV в русском Excel без «кракозябр» и почему 007 остаётся строкой.

Интерфейс онлайн-инструмента Конвертер JSON - CSV
Интерфейс онлайн-инструмента Конвертер JSON - CSV

Что умеет конвертер

Конвертер JSON - CSV принимает JSON (массив объектов) или CSV и переводит его в другой формат.

Параметр Что делает
Открыть файл Загружает файл с компьютера
Направление «Определить автоматически» или явный выбор JSON → CSV / CSV → JSON
Разделитель Автоопределение, запятая, точка с запятой и другие
Первая строка — заголовки Считать первую строку CSV заголовками
Вложенные поля через точку Разворачивает вложенные объекты в колонки вида contacts.email
Распознавать числа и true/false При CSV → JSON превращает числа и булевы значения в типы
Защита от формул (CSV-инъекций) Ставит апостроф перед текстом, начинающимся с =, +, -, @
Для Excel: UTF-8 с BOM Добавляет BOM, чтобы Excel правильно прочитал кириллицу

Направление определяется автоматически: инструмент понимает, что перед ним, и переводит в противоположный формат. Всё выполняется в браузере: данные никуда не отправляются.

JSON и CSV: чем отличаются

Это два разных способа хранить данные, и они не взаимозаменяемы один в один.

Свойство JSON CSV
Структура Иерархическая: объекты и массивы Плоская таблица: строки и колонки
Вложенность Поддерживается Нет, только через разворачивание в колонки
Типы Числа, строки, булевы, null, массивы, объекты Все значения — текст, типы теряются
Читаемость для человека Средняя Высокая в таблице
Открывается в Excel Нет Да
Подходит для API Да Реже

Главное ограничение: CSV — плоская таблица. Вложенные объекты и массивы в неё не помещаются напрямую, их нужно разворачивать в колонки.

Вложенные объекты и массивы: как разворачиваются

Это ключевая функция конвертера.

JSON CSV-колонка
{"contacts": {"email": "…"}} contacts.email
{"tags": ["a", "b"]} tags.0, tags.1
{"author": {"name": "…", "active": true}} author.name, author.active

С параметром «Вложенные поля через точку» объект становится колонкой с точкой в имени, а массив — набором колонок с индексами.

При обратном переводе такие колонки снова собираются в объекты и массивы: contacts.email превращается во вложенный объект, tags.0 и tags.1 — в массив.

Это значит, что цикл JSON → CSV → JSON с включённой опцией восстанавливает структуру. Без опции вложенные объекты останутся плоскими строками.

Защита от CSV-инъекций: почему это важно

Самая недооценённая функция. CSV-инъекция — атака, при которой в данные попадает формула.

Как это работает:

  1. Если ячейка начинается с =, +, - или @, табличный редактор считает её формулой.
  2. Злоумышленник может положить в данные формулу, которая при открытии файла отправит содержимое таблицы на чужой сервер или запустит команду.
  3. Пользователь открывает CSV в Excel — и формула выполняется.

С включённой защитой перед таким текстом ставится апостроф, и он показывается как обычный текст. Числа не меняются — защита касается только текста, который мог бы стать формулой.

Это не паранойя: CSV-инъекции — известный класс атак, и данные из ненадёжного источника без защиты опасны.

Русский Excel и «кракозябры»

Две типичные проблемы при открытии CSV в Excel.

Одна колонка вместо таблицы. Русский Excel ожидает разделитель ;, а не ,. Если CSV с запятыми, Excel покажет всё в одной колонке. Решение — выбрать «Точка с запятой» в параметре разделителя.

«Кракозябры» вместо кириллицы. Excel без BOM может неправильно определить кодировку. Решение — отметить «Для Excel: UTF-8 с BOM» перед скачиванием. BOM — специальная метка в начале файла, которая говорит Excel, что текст в UTF-8.

Обе настройки — про совместимость с Excel, а не про ошибку в данных.

Почему 007 остаётся строкой

Частый вопрос. Причина — в типах.

Числа с ведущими нулями (почтовые индексы, артикулы, коды) при переводе в число потеряли бы нули: 007 стало бы 7. Поэтому конвертер оставляет их строками.

Очень большие целые числа JavaScript не может хранить без потери точности. Такие числа тоже остаются строками, чтобы не исказить значение.

Это не ошибка, а осознанное решение: лучше сохранить строку, чем потерять данные.

Зачем конвертировать

Задача Что даёт конвертер
Выгрузка в Excel Массив JSON → таблица CSV
Загрузка из таблицы CSV → JSON для API
Передача коллегам CSV открывается в любом табличном редакторе
Анализ данных Фильтры и сводные таблицы в Excel
Импорт в базу CSV → JSON для загрузки
Проверка данных Таблица нагляднее массива объектов

Ограничения инструмента

  • JSON должен быть массивом объектов. Одиночный объект или массив примитивов не подойдёт.
  • Вложенность теряется без опции. Без «Вложенные поля через точку» объекты и массивы останутся плоскими.
  • Типы в CSV теряются. В CSV всё текст; при обратном переводе числа и булевы значения распознаются, но не всегда однозначно.
  • Защита от формул меняет данные. Апостроф перед текстом — это изменение, но необходимое для безопасности.

Как пользоваться: пошагово

  1. Вставьте JSON (массив объектов) или CSV либо откройте файл.
  2. Проверьте направление, разделитель и параметры. Для русского Excel — точка с запятой и UTF-8 с BOM.
  3. Нажмите «Преобразовать», проверьте таблицу и скачайте результат.

Типичные ошибки

Открывать CSV с запятыми в русском Excel. Excel ожидает ;. Выберите точку с запятой или используйте мастер импорта.

Забывать про UTF-8 с BOM. Без BOM Excel может показать «кракозябры» вместо кириллицы.

Отключать защиту от формул для данных из ненадёжного источника. CSV-инъекция — реальный класс атак. Оставляйте защиту включённой.

Ожидать, что вложенность сохранится без опции. Без «Вложенные поля через точку» объекты и массивы станут плоскими.

Удивляться, что 007 стало строкой. Числа с ведущими нулями остаются строками, чтобы не потерять нули.

Конвертировать одиночный объект. Инструмент ожидает массив объектов. Одиночный объект нужно обернуть в массив.

Вопросы и ответы

Excel открывает CSV одной колонкой или с «кракозябрами». Что делать? Русский Excel ожидает разделитель ; — выберите «Точка с запятой». Чтобы Excel правильно прочитал кириллицу, отметьте «Для Excel: UTF-8 с BOM» перед скачиванием.

Что такое CSV-инъекция? Если ячейка начинается с =, +, - или @, табличный редактор считает её формулой. Злоумышленник может положить в данные формулу, которая при открытии файла отправит содержимое таблицы на чужой сервер или запустит команду. С включённой защитой перед таким текстом ставится апостроф, и он показывается как обычный текст. Числа не меняются.

Как переводятся вложенные объекты и массивы? С параметром «Вложенные поля через точку» объект {"contacts": {"email": "…"}} становится колонкой contacts.email, а массив ["a", "b"] — колонками tags.0 и tags.1. При обратном переводе такие колонки снова собираются в объекты и массивы.

Почему 007 осталось строкой? Числа с ведущими нулями (почтовые индексы, артикулы, коды) при переводе в число потеряли бы нули, поэтому остаются строками. Строками остаются и очень большие целые числа, которые JavaScript не может хранить без потери точности.

Можно ли конвертировать вложенные массивы объектов? Да, с опцией «Вложенные поля через точку». Массив объектов развернётся в колонки с индексами и полями.

Почему CSV не сохраняет типы? CSV — текстовый формат, в нём все значения текст. При обратном переводе инструмент распознаёт числа и true/false, но не всегда однозначно.

Итог

Конвертер JSON - CSV — инструмент для перевода массива объектов JSON в таблицу CSV и обратно. Он разворачивает вложенные объекты в колонки с точкой и собирает их обратно, определяет разделитель, распознаёт числа и true/false, защищает от CSV-инъекций и помогает открыть файл в русском Excel без «кракозябр». Помните, что CSV — плоская таблица, а числа с ведущими нулями остаются строками, — и конвертация пройдёт без потери данных и без риска для тех, кто откроет файл.

Предыдущая запись

Конвертер JSON - YAML: как перевести конфиг в другой формат и не потерять данные

Онлайн-конвертер JSON в YAML и обратно: для docker-compose, Kubernetes, GitHub Actions и конфигураций CMS. Автоопределение направления, ошибки с номером строки и столбца, сортировка ключей, выбор отступа, открытие файла и скачивание результата.
Далее