Конвертер JSON в CSV
Вставьте JSON-массив объектов слева, получите корректно экранированный CSV справа. Заголовок из ключей. Без загрузки.
- Вставьте JSON-массив объектов в текстовое поле слева.
- Нажмите «Преобразовать в CSV». Строка заголовка строится из объединения ключей всех объектов.
- Скопируйте результат или скачайте как data.csv.
- Для вложенных значений поле сериализуется в JSON-строку — заранее уплощайте, если нужны плоские столбцы.
Что это делает?
Преобразует JSON-массив объектов в CSV в стиле RFC 4180. Строка заголовка — это объединение всех ключей по объектам. Значения экранируются CSV-кавычками, если содержат запятые, кавычки или переводы строк. Числа и булевы выдаются без кавычек; null и undefined становятся пустыми полями. Вложенные значения (объекты, массивы) сериализуются в JSON-строку в одно поле в кавычках — CSV не может изначально представить иерархию.
Пример
Вход JSON:
[
{"name":"Ada","age":36,"role":"engineer"},
{"name":"Grace","age":40,"role":"scientist"}
] Выход CSV:
name,age,role
Ada,36,engineer
Grace,40,scientist Типичные ловушки JSON → CSV
CSV — плоский формат. Большинство «странных» выводов идёт из JSON-форм, у которых нет плоского представления.
- Верхний уровень — не массив. JSON-объект `{"a":1,"b":2}` нельзя преобразовать в CSV напрямую — оберните его в массив: `[{"a":1,"b":2}]`. CSV получит одну строку заголовка и одну строку данных.
- Разные ключи в строках. Если у первого объекта ключи `{a,b}`, а у второго `{a,c}`, заголовок будет `a,b,c` (объединение). Строки без ключа отдают пустое поле. Нужна более строгая схема — предобработайте.
- Вложенные значения молча уплощаются. Поле вроде `{"address":{"city":"NY"}}` становится одним столбцом CSV со значением — JSON-строкой `{"city":"NY"}`. Чтобы получить отдельные столбцы `address.city`, уплощайте в JavaScript заранее: `{address_city: row.address.city}`.
- Переводы строк внутри значений. Многострочная строка в JSON-значении становится CSV-полем в кавычках с буквальными `\n` внутри кавычек. Большинство табличных приложений обрабатывает это корректно; некоторые старые инструменты — нет.
- Спецсимволы в заголовках. JSON-ключи с запятыми, кавычками или переводами строк работают, но дают строку заголовка, которую некоторые потребители CSV парсят плохо. Если нужна максимальная совместимость, переименуйте ключи в буквы/цифры/подчёркивания перед конвертацией.
- Запятая в конце JSON. `[{"a":1},]` — невалидный JSON (хвостовая запятая после последнего элемента). Парсер отвергнёт это до шага CSV. Большинство JSON-форматтеров их убирают — пропустите через `/json-prettifier`, если надо.
Часто задаваемые вопросы
Как получить вывод с табуляторами (TSV)?
Эта страница выдаёт CSV с запятыми. Для TSV замените `,` на `\t` в результате или запустите PapaParse с `delimiter: "\t"` в командной строке — та же библиотека.
Сохраняется ли порядок ключей в строке заголовка?
Да — заголовок использует тот порядок, в котором ключи впервые встречаются среди всех объектов. Хотите алфавитный порядок — отсортируйте ключи в JSON перед вставкой.
Как обрабатываются даты?
В JSON нет нативного типа Date — даты обычно уже сериализованы как ISO 8601-строки. Они проходят без изменений. Если JSON получен из JSON.stringify Date, он уже стал ISO-строкой к этому моменту.
Можно ли сделать круг JSON → CSV → JSON?
Для плоских массивов плоских объектов — да. Строки остаются строками, числа — числами (с динамической типизацией PapaParse при импорте). Вложенные значения теряют структуру на стороне CSV и возвращаются как поля JSON-строк, а не как вложенные объекты снова.
Загружается ли мой JSON куда-то?
Нет. Всё работает в вашем браузере — JSON парсится и преобразуется JavaScript на этой странице и не отправляется ни на какой сервер. Проверьте в DevTools браузера.
Какого размера JSON можно конвертировать?
До примерно 50 МБ, прежде чем текстовая область браузера начнёт тормозить. Сама конвертация масштабируется линейно по размеру входа; узкое место — рендеринг. Для больших файлов запускайте PapaParse в командной строке.