Конвертация JSON в CSV преобразует структурированные данные из формата JSON в значения, разделённые запятыми, — табличный формат, который нативно воспринимается электронными таблицами, базами данных и аналитическими инструментами. JSON хранит данные как вложенные объекты и массивы без фиксированной схемы. CSV хранит данные в виде строк и столбцов, где заголовочная строка определяет имена полей. Конвертация — это способ передачи данных API в электронные таблицы и базы данных.
CSV (Comma-Separated Values) определяется стандартом RFC 4180. Каждая строка — одна запись, а поля внутри строки разделены символом-разделителем, чаще всего запятой. Поля, содержащие разделитель, двойные кавычки или переносы строк, должны заключаться в двойные кавычки, причём внутренние кавычки экранируются удвоением. Это экранирование — основной источник ошибок при написании конвертера JSON в CSV вручную.
Конвертация проста, когда входные данные представляют собой плоский массив объектов с одинаковыми ключами. Каждый объект становится одной строкой, а каждый уникальный ключ — заголовком столбца. Вложенные объекты и массивы требуют шага выравнивания, а непоследовательные ключи в объектах требуют стратегии обработки отсутствующих полей — как правило, ячейка просто оставляется пустой. Надёжный конвертер обрабатывает все эти граничные случаи автоматически.
Зачем конвертировать JSON в CSV?
API возвращают JSON, а электронные таблицы, SQL-базы данных и BI-инструменты ожидают табличные данные. Конвертация JSON в CSV позволяет перемещать данные между этими системами без написания пользовательских скриптов импорта.
⚡
Мгновенная конвертация в браузере
Вставьте JSON и сразу скачайте файл. Никакой загрузки на сервер, ограничений на размер файла от внешних API и ожидания в очереди обработки.
🔒
Обработка с приоритетом конфиденциальности
Данные остаются в браузере. Конвертация выполняется полностью в JavaScript на вашем устройстве. Экспорт из баз данных, записи пользователей и финансовые данные не покидают вашу машину.
🔀
Поддержка нескольких разделителей
Выбирайте между запятой, точкой с запятой, табуляцией или вертикальной чертой. Используйте точку с запятой для электронных таблиц с европейскими региональными настройками, табуляцию для TSV-файлов или вертикальную черту для импорта в устаревшие системы.
📋
Без регистрации
Откройте страницу и конвертируйте. Никакой регистрации, API-ключей и установки CLI. Работает на любом устройстве с современным браузером.
Сценарии использования JSON to CSV
Экспорт данных API в электронные таблицы
REST API возвращают JSON. Менеджеры продуктов и аналитики нуждаются в этих данных в Excel или Google Sheets. Конвертируйте ответ API в CSV и откройте его напрямую в любом приложении для работы с таблицами.
Массовый импорт в базу данных
PostgreSQL COPY, MySQL LOAD DATA и SQLite .import принимают CSV. Конвертируйте набор данных в табличный формат для быстрой массовой загрузки без написания пользовательского скрипта импорта.
Прототипирование ETL-пайплайна
ETL-пайплайны часто имеют промежуточные результаты, которые сложно просматривать как сырой JSON. Конвертируйте вывод шага в CSV и откройте в электронной таблице, чтобы проверить преобразования перед сборкой полного пайплайна.
Подготовка тестовых данных для QA
Инженеры QA генерируют тестовые фикстуры в JSON, но многие тестовые фреймворки и инструменты для тестирования с данными принимают CSV для параметризованных тестовых входных данных. Конвертируйте фикстуры в CSV без ручного переформатирования.
Анализ логов и отчётность
Структурированные JSON-логи приложений и облачных сервисов можно конвертировать в CSV для импорта в BI-инструменты — Tableau, Power BI или Looker — для визуализации и составления отчётов.
Обработка академических данных
Студенты и исследователи, работающие с API открытых данных, получают JSON-ответы. Конвертация в CSV позволяет выполнять анализ в R, pandas, SPSS или Excel без написания кода парсинга.
Справочник разделителей CSV
Символ-разделитель отделяет поля внутри каждой строки. Запятая наиболее распространена, но другие разделители стандартны в определённых контекстах. Выбор неправильного разделителя приводит к слиянию или некорректному разделению полей при открытии файла.
Разделитель
Символ
Расширение
Когда использовать
Comma
,
.csv
Default for most spreadsheets and databases
Semicolon
;
.csv
Standard in locales where comma is a decimal separator (DE, FR, BR)
Tab
\t
.tsv
Avoids escaping when field values contain commas or semicolons
Pipe
|
.csv
Used in fixed-width legacy systems and some ETL pipelines
Обработка вложенного JSON в CSV
CSV — это плоский формат без нативных средств представления вложенных объектов или массивов. Когда JSON содержит вложенные структуры, конвертер должен выровнять их в столбцы. Существует несколько стратегий, и правильный выбор зависит от того, как CSV будет использоваться.
Выравнивание с точечной нотацией
Вложенные ключи объединяются через точки: {"address": {"city": "Москва"}} становится столбцом с именем address.city и значением Москва. Это наиболее распространённый подход, хорошо работающий с инструментами, поддерживающими ссылки на вложенные поля.
Столбцы с индексами массива
Массивы разворачиваются в пронумерованные столбцы: {"tags": ["a", "b"]} становится tags.0 = a, tags.1 = b. Это сохраняет все значения, но создаёт много столбцов при больших массивах.
Запасной вариант — JSON-строка
Сложные вложенные значения сериализуются как JSON-строки внутри ячейки CSV: ячейка содержит сырой текст JSON. Это сохраняет полную структуру, но требует от потребителя разбора значения ячейки.
Игнорирование вложенных полей
Некоторые конвертеры полностью отбрасывают вложенные объекты и массивы, сохраняя только скалярные поля (строки, числа, булевы, null). Это даёт чистый CSV, но теряет данные. Полезно только тогда, когда вложенные поля заведомо не нужны.
Примеры кода
Программная конвертация JSON в CSV требует обработки извлечения заголовков, экранирования полей и экранирования разделителей. В большинстве языков есть встроенные средства или стандартные библиотеки для записи CSV.
# Using jq to convert JSON array to CSV
echo '[{"name":"Alice","age":30},{"name":"Bob","age":25}]' | \
jq -r '(.[0] | keys_unsorted) as $k | $k, (.[] | [.[$k[]]] ) | @csv'
# → "name","age"
# → "Alice",30
# → "Bob",25
# Using Miller (mlr) for streaming conversion
echo '[{"name":"Alice","age":30}]' | mlr --json --ocsv cat
# → name,age
# → Alice,30
Go
package main
import (
"encoding/csv"
"encoding/json"
"fmt"
"os"
)
func main() {
jsonStr := `[{"name":"Alice","age":30},{"name":"Bob","age":25}]`
var data []map[string]interface{}
json.Unmarshal([]byte(jsonStr), &data)
w := csv.NewWriter(os.Stdout)
// Write header
headers := []string{"name", "age"}
w.Write(headers)
// Write rows
for _, row := range data {
record := make([]string, len(headers))
for i, h := range headers {
record[i] = fmt.Sprintf("%v", row[h])
}
w.Write(record)
}
w.Flush()
// → name,age
// → Alice,30
// → Bob,25
}
Часто задаваемые вопросы
Какую структуру JSON ожидает этот конвертер?
Конвертер ожидает JSON-массив объектов, например [{"name":"Алексей"},{"name":"Мария"}]. Каждый объект массива становится одной строкой вывода, а ключи объектов — заголовками столбцов. Одиночный JSON-объект (не обёрнутый в массив) обрабатывается как таблица из одной строки.
Как обрабатываются вложенные объекты и массивы?
Вложенные значения выравниваются с использованием точечной нотации. Например, {"address":{"city":"Москва"}'} создаёт столбец с именем address.city. Массивы разворачиваются в индексированные столбцы (tags.0, tags.1). Это сохраняет данные при плоском выводе.
Что происходит, когда объекты имеют разные ключи?
Конвертер собирает все уникальные ключи из всех объектов массива и использует их как заголовки столбцов. Объекты, в которых отсутствует ключ, получают пустую ячейку для этого столбца. Данные не теряются, а порядок столбцов соответствует порядку первого появления ключей.
Можно ли использовать точку с запятой или табуляцию вместо запятой?
Да. Инструмент поддерживает разделители: запятая, точка с запятой, табуляция и вертикальная черта. Используйте точку с запятой, если в данных или региональных настройках запятая является десятичным разделителем (характерно для немецких, французских и бразильских таблиц). Используйте табуляцию для TSV-файлов, потребляемых Unix-инструментами.
Является ли конвертация безвозвратной (без потерь)?
Для плоских JSON-массивов с одинаковыми скалярными значениями — да. Выходной файл содержит те же данные и может быть конвертирован обратно в идентичный JSON. Для вложенных структур выравнивание изменяет форму данных. Значения массивов, сериализованные в индексированные столбцы или JSON-строки, можно восстановить, но обратное преобразование требует знания исходной структуры.
Файл JSON какого размера можно конвертировать?
Инструмент работает в браузере и обрабатывает данные в памяти — файлы до 10–20 МБ конвертируются без проблем на современных устройствах. Для файлов большего размера используйте CLI-инструмент jq, Miller или Python-скрипт с модулем csv, которые обрабатывают данные потоково.
Безопасно ли вставлять конфиденциальные данные в этот инструмент?
Да. Вся обработка происходит в браузере с помощью JavaScript. Данные не отправляются ни на какой сервер. Убедиться в этом можно, открыв инструменты разработчика браузера и проверив вкладку «Сеть» во время конвертации.