JSON to CSV

Конвертация JSON-массива в формат CSV

Работает локально · Безопасно вставлять секреты
CSV появится здесь…

Что такое конвертация JSON в CSV?

Конвертация 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,.csvDefault for most spreadsheets and databases
Semicolon;.csvStandard in locales where comma is a decimal separator (DE, FR, BR)
Tab\t.tsvAvoids escaping when field values contain commas or semicolons
Pipe|.csvUsed 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.

JavaScript (Node.js)
const data = [
  { name: "Alice", age: 30, city: "Berlin" },
  { name: "Bob", age: 25, city: "Tokyo" },
]

// Extract headers from the first object
const headers = Object.keys(data[0])
const csv = [
  headers.join(","),
  ...data.map(row => headers.map(h => {
    const val = String(row[h] ?? "")
    // Quote fields that contain commas, quotes, or newlines
    return val.includes(",") || val.includes('"') || val.includes("\n")
      ? '"' + val.replace(/"/g, '""') + '"'
      : val
  }).join(","))
].join("\n")

console.log(csv)
// → name,age,city
// → Alice,30,Berlin
// → Bob,25,Tokyo
Python
import json, csv, io

json_str = '[{"name":"Alice","age":30,"city":"Berlin"},{"name":"Bob","age":25,"city":"Tokyo"}]'
data = json.loads(json_str)

output = io.StringIO()
writer = csv.DictWriter(output, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)

print(output.getvalue())
# → name,age,city
# → Alice,30,Berlin
# → Bob,25,Tokyo
CLI (jq + Miller)
# 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. Данные не отправляются ни на какой сервер. Убедиться в этом можно, открыв инструменты разработчика браузера и проверив вкладку «Сеть» во время конвертации.