JSON в CSV: быстрая конвертация и онлайн-инструмент

💻 IT и кодОбновлено: 13 июля 2026 г.5 мин чтения
До сих пор копируешь JSON в Excel, а потом руками тащишь границы? В 2026 году это моветон. Покажу, как за пару секунд превратить кривой API-ответ в CSV-таблицу, готовую для Power BI или отчёта. Без боли, с рабочими примерами.
⚡ Коротко: главное
  • Для корректного преобразования вложенных JSON используйте jq с флагом -r и рекурсивным flattening.
  • Онлайн-конвертер JSON в CSV на сайте обрабатывает файлы до 50 МБ и автоматически определяет заголовки.
  • Ручное преобразование с помощью pandas.to_csv работает в 10 раз быстрее, чем циклы Python при объёме >1000 строк.
  • Ошибка кодировки CSV (windows-1251 вместо UTF-8) — причина 80% проблем с кривыми знаками в Excel.

Базовый способ: однострочник на Python для плоского JSON

Самый простой случай — у вас массив объектов с одинаковыми ключами. Возьмите любой Python 3.11+ и библиотеку pandas. Она сделает всё за одну команду:

import pandas as pd
df = pd.read_json('data.json')
df.to_csv('output.csv', index=False, encoding='utf-8')

Если JSON хранится не в файле, а в переменной json_str:

df = pd.read_json(json_str)
df.to_csv('output.csv', index=False)

Этот код подходит для JSON вида [{"name":"Иван","age":30},...]. Для вложенных объектов pandas сам расплющит названия ключей через точку (например, address.city). Если не хотите такие заголовки — переименуйте колонки после загрузки.

Важно: pandas ожидает, что JSON — это массив объектов, а не одиночный объект. Если ваш JSON — объект, оберните его в список: [data].

Командная строка: jq и miller для гиков и DevOps

Если не хотите писать скрипты, используйте утилиту jq (версия 1.7+) в пайпе. Преобразуем JSON в CSV для плоской структуры:

jq -r '(.[0] | keys_unsorted) as $headers | $headers, (.[] | [.[$headers[]]]) | @csv' data.json

Разбор команды:

  • .[0] | keys_unsorted — извлекаем заголовки из первого объекта;
  • $headers — сохраняем в переменную;
  • .[] | [.[$headers[]]] — для каждого элемента берём значения в том же порядке;
  • @csv — форматируем как CSV.

Для вложенных объектов используйте jq -r '[paths(scalars) as $p | {($p|join(".")): getpath($p)}], но проще — утилита miller (mlr):

mlr --ijson --ocsv cat data.json

Miller автоматически расплющивает вложенность до 5 уровней.

УтилитаКомандаВложенностьКодировка
jqjq -r '...'только плоскийUTF-8
miller (mlr)mlr --ijson --ocsvавто (до 5 ур.)UTF-8
python + pandaspd.read_json().to_csv()авто (без ограничений)любая

Универсальный онлайн-конвертер: быстро, без установки

Не хочется возиться с кодом? Используйте JSON в CSV прямо в браузере. Он поддерживает:

  • Файлы до 50 МБ (форматы .json, .txt, а также ссылки по URL);
  • Автоматическое обнаружение вложенных объектов — создаёт плоскую таблицу с объединёнными заголовками;
  • Настройку разделителя (запятая, точка с запятой, табуляция) — чтобы CSV корректно открывался в Excel или Google Sheets;
  • Экспорт с BOM для Excel (UTF-8 BOM) — решает проблему с кракозябрами.

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

  1. Загрузите JSON-файл или вставьте текст в поле.
  2. Выберите настройки: если у вас русские буквы — включите BOM.
  3. Нажмите «Конвертировать» и скачайте CSV.

Если наоборот — из CSV нужно получить JSON, используйте CSV в JSON. А для работы с Excel-форматами подойдут XLSX в JSON и JSON в XLSX, а также Excel в JSON.

Как конвертировать JSON в CSV за 4 шага
  1. 1
    1. Проверить структуру JSON

    Убедитесь, что это массив объектов или есть ключ с массивом.

  2. 2
    2. Выбрать метод

    Для плоского — jq, для вложенного — pandas или онлайн-конвертер.

  3. 3
    3. Применить преобразование

    Используйте команду или загрузите файл.

  4. 4
    4. Настроить кодировку

    Для Excel выберите UTF-8 with BOM, для остальных — UTF-8.

Универсальный алгоритм для любого JSON

Как обработать вложенный JSON с массивами и объектами

Часто JSON выглядит так:

{
  "users": [
    {"name": "Иван", "orders": [{"id": 1, "total": 100}, {"id": 2, "total": 200}]}
  ]
}

Просто расплющить не выйдет — строки размножатся. Лучшие стратегии:

  • Разделить на несколько CSV: один для users, один для orders, связать внешним ключом.
  • Склеить массивы в одну ячейку: используйте jq '{name, orders: (.orders | map(.total) | join(";"))}' — получите колонку с id через точку с запятой.
  • Развернуть (нормализовать): pandas умеет через pd.json_normalize с параметром record_path:
import pandas as pd
with open('data.json') as f:
    data = json.load(f)
df = pd.json_normalize(data['users'], 'orders', ['name'])
df.to_csv('orders.csv', index=False)

Этот код создаст CSV с колонками id, total, name, где для каждого заказа дублируется имя пользователя.

Если структура глубже — разбивайте вручную: сначала вытащите родителей, потом детей, потом соедините по ключу.

Чеклист: конвертация JSON в CSV без ошибок

0 из 8

Проблемы с кодировкой: как избавиться от кракозябр в Excel

Самый частый провал: открываете CSV в Excel, а вместо «Привет» — «ÐŸÑ€Ð¸Ð²ÐµÑ‚». Причина: Excel для Windows по умолчанию читает CSV в кодировке Windows-1251, а мы сохранили в UTF-8 без BOM. Решение:

  • Добавить BOM (Byte Order Mark) в начало файла. В Python: df.to_csv('output.csv', encoding='utf-8-sig', index=False). Префикс sig добавляет BOM.
  • При открытии в Excel: импорт через «Данные» → «Из текстового/CSV» и вручную выбрать кодировку UTF-8.
  • Используйте онлайн-конвертер с опцией BOM — JSON в CSV уже включает эту настройку.

Если вы работаете с Google Sheets, загружайте CSV через Файл → Импорт — он сам определит UTF-8. Для LibreOffice тоже проблем нет.

В 2026 году стандарт — UTF-8 без BOM. Но если ваш потребитель — старый Excel (до 2016), лучше UTF-8 with BOM.

Edge-case: некорректный JSON, большой файл, спецсимволы

Некорректный JSON: если файл повреждён, используйте json.tool для валидации: echo '...' | python -m json.tool > /dev/null. Если JSON содержит комментарии (нестандарт), удалите их регуляркой или используйте библиотеку json5.

Большой файл (сотни МБ): потоковая обработка. В Python:

import ijson
import csv
with open('large.json') as f:
    parser = ijson.parse(f)
    with open('output.csv', 'w', newline='') as csvfile:
        writer = csv.writer(csvfile)
        for prefix, event, value in parser:
            # логика построчной записи
            pass

Это не выгружает весь JSON в память.

Спецсимволы в данных: запятые, кавычки, переносы строк. CSV-стандарт (RFC 4180) требует экранировать двойные кавычки дублированием ("") и обрамлять поля с запятыми. pandas и csv модуль делают это автоматически. Если конвертируете вручную — используйте @csv в jq или экранируйте вручную.

Сравнение методов: что выбрать для вашей задачи

МетодСкоростьПростотаВложенные данныеБез установки
pandasбыстро (≤1 сек на 10K строк)средне (нужен Python)хорошо (json_normalize)нет
jqочень быстро (C)сложно (синтаксис)плохо (ручное flattening)нет
millerбыстро (C)просто (одна команда)хорошо (до 5 ур.)нет
онлайн-конвертерзависит от сетиочень простохорошо (авто)да

Если вам нужно разово конвертировать небольшой файл — онлайн-конвертер JSON в CSV сэкономит время. Для автоматизации в пайплайне — miller или pandas. Для сложной вложенности — pandas с нормализацией.

🧮 Посчитайте сами — инструменты по теме

🧭 Разделы по теме

Частые вопросы

Как конвертировать JSON в CSV онлайн бесплатно?

Используйте сервис JSON в CSV (ссылка выше). Загрузите файл или вставьте текст, настройте параметры, скачайте результат. Бесплатно, без регистрации.

Что делать, если JSON содержит вложенные объекты?

Если структура неглубокая, онлайн-конвертер автоматически расплющит её. Для сложных случаев используйте pandas json_normalize в Python.

Как сохранить кириллицу в CSV без кракозябр?

Сохраните в кодировке UTF-8 with BOM. В Python используйте encoding='utf-8-sig'. При открытии в Excel выберите импорт с кодировкой UTF-8.

Какой разделитель выбрать для CSV: запятая или точка с запятой?

Запятая — стандарт RFC 4180, но Excel (русский) может неправильно открыть. Точка с запятой работает надёжнее. Онлайн-конвертер позволяет выбрать.

Можно ли конвертировать CSV обратно в JSON?

Да, используйте сервис CSV в JSON (ссылка выше) или команду pandas: pd.read_csv('file.csv').to_json('file.json').

Что делать, если JSON очень большой (500 МБ)?

Используйте потоковый парсер ijson в Python или утилиту jq, чтобы обрабатывать данные по частям, не загружая всё в память. Онлайн-конвертер имеет лимит 50 МБ.

Как конвертировать JSON в Excel (XLSX)?

Сначала конвертируйте JSON в CSV, а затем откройте файл в Excel и сохраните как XLSX. Или используйте сервис JSON в XLSX (ссылка выше) для прямого преобразования.

Как в Python из JSON сделать CSV с кастомными заголовками?

Загрузите JSON в pandas DataFrame, переименуйте колонки через df.rename(), затем сохраните в CSV.

Источники и нормативные документы

  1. RFC 4180 — формат CSV
  2. Документация pandas.read_json
  3. Документация jq
  4. Документация miller

Ещё по теме «IT и код»