JSON в CSV: быстрая конвертация и онлайн-инструмент
- Для корректного преобразования вложенных JSON используйте jq с флагом -r и рекурсивным flattening.
- Онлайн-конвертер JSON в CSV на сайте обрабатывает файлы до 50 МБ и автоматически определяет заголовки.
- Ручное преобразование с помощью pandas.to_csv работает в 10 раз быстрее, чем циклы Python при объёме >1000 строк.
- Ошибка кодировки CSV (windows-1251 вместо UTF-8) — причина 80% проблем с кривыми знаками в Excel.
- Базовый способ: однострочник на Python для плоского JSON
- Командная строка: jq и miller для гиков и DevOps
- Универсальный онлайн-конвертер: быстро, без установки
- Как обработать вложенный JSON с массивами и объектами
- Проблемы с кодировкой: как избавиться от кракозябр в Excel
- Edge-case: некорректный JSON, большой файл, спецсимволы
- Сравнение методов: что выбрать для вашей задачи
Базовый способ: однострочник на 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.jsonMiller автоматически расплющивает вложенность до 5 уровней.
| Утилита | Команда | Вложенность | Кодировка |
|---|---|---|---|
| jq | jq -r '...' | только плоский | UTF-8 |
| miller (mlr) | mlr --ijson --ocsv | авто (до 5 ур.) | UTF-8 |
| python + pandas | pd.read_json().to_csv() | авто (без ограничений) | любая |
Универсальный онлайн-конвертер: быстро, без установки
Не хочется возиться с кодом? Используйте JSON в CSV прямо в браузере. Он поддерживает:
- Файлы до 50 МБ (форматы .json, .txt, а также ссылки по URL);
- Автоматическое обнаружение вложенных объектов — создаёт плоскую таблицу с объединёнными заголовками;
- Настройку разделителя (запятая, точка с запятой, табуляция) — чтобы CSV корректно открывался в Excel или Google Sheets;
- Экспорт с BOM для Excel (UTF-8 BOM) — решает проблему с кракозябрами.
Как пользоваться:
- Загрузите JSON-файл или вставьте текст в поле.
- Выберите настройки: если у вас русские буквы — включите BOM.
- Нажмите «Конвертировать» и скачайте CSV.
Если наоборот — из CSV нужно получить JSON, используйте CSV в JSON. А для работы с Excel-форматами подойдут XLSX в JSON и JSON в XLSX, а также Excel в JSON.
- 11. Проверить структуру JSON
Убедитесь, что это массив объектов или есть ключ с массивом.
- 22. Выбрать метод
Для плоского — jq, для вложенного — pandas или онлайн-конвертер.
- 33. Применить преобразование
Используйте команду или загрузите файл.
- 44. Настроить кодировку
Для Excel выберите UTF-8 with BOM, для остальных — UTF-8.
Как обработать вложенный 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.
Источники и нормативные документы
- RFC 4180 — формат CSV
- Документация pandas.read_json
- Документация jq
- Документация miller