🔧Toolify

Конвертер CSV ↔ JSON (соответствует RFC 4180)

Вставьте CSV или JSON. Конвертер разбирает CSV по RFC 4180 (обрабатывает поля в кавычках с запятыми, экранированные кавычки, многострочные значения). Для JSON в CSV принимает как массив объектов (использует ключи как заголовки), так и массив массивов.

Вывод
[
  {
    "name": "Alice",
    "age": "30",
    "city": "Tokyo"
  },
  {
    "name": "Bob",
    "age": "25",
    "city": "Seoul"
  },
  {
    "name": "Carol",
    "age": "42",
    "city": "Madrid"
  }
]

Как это работает

Почему важен RFC 4180

CSV выглядит просто, но имеет граничные случаи: поле, содержащее запятую, должно быть в кавычках; поле, содержащее кавычку, должно экранировать её удвоением; поле может содержать переносы строк, если заключено в кавычки. Наивные парсеры «разбить по запятой» ломаются на реальных данных. Этот конвертер точно реализует грамматику RFC 4180.

Наивные парсеры также ломаются на экспортах Excel, использующих точку с запятой (распространено в европейских локалях, где ',' является разделителем дробной части) или табуляцию (TSV). Выпадающий список разделителей охватывает все четыре распространённых варианта.

Форматы JSON на выходе

Массив объектов (по умолчанию со строкой заголовка): каждая строка становится {столбец: значение}. Наиболее распространённый формат JSON, удобный для потребления на любом языке.

Массив массивов (строка заголовка выключена): каждая строка становится [v1, v2, ...]. Полезно, когда столбцы не именованы или нужна позиционная структура.

При конвертации JSON в CSV конвертер определяет форму. Объекты: извлекает уникальные ключи по всем строкам для заголовков. Массивы: записывает строки как есть.

Распространённые проблемы

Локаль Excel: в некоторых европейских инсталляциях Excel разделитель по умолчанию ';', а не ','. Если ваш CSV при импорте выглядит как один гигантский столбец, переключитесь на ; в выпадающем списке разделителей.

BOM (метка порядка байт): некоторые экспорты Excel добавляют в начало файла U+FEFF. Мы пропускаем его; если ваш нижестоящий парсер даёт сбой, удалите первые 3 байта.

Завершающий перенос строки: CSV, заканчивающийся на '\n', добавляет пустую последнюю строку в некоторых парсерах; мы автоматически фильтруем пустые строки.

Числа как строки: CSV не имеет типов — '42' становится строкой "42" в JSON. Если нужны типизированные значения, добавьте шаг постобработки, приводящий известные числовые столбцы к нужному типу.

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

Обрабатываются ли поля в кавычках с запятыми?

Да — кавычки RFC 4180 полностью поддерживаются. "Иванов, Иван" парсится как одно поле.

Как обрабатываются экранированные кавычки?

По RFC 4180 буквальная '"' внутри поля в кавычках записывается как '""' (две кавычки). Парсер обрабатывает это корректно.

Могут ли поля содержать переносы строк?

Да, если в кавычках. "строка 1\nстрока 2" внутри кавычек воспринимается как одно поле со встроенным переносом строки.

Поддерживается ли BOM (UTF-8)?

BOM пропускается. Если ваш нижестоящий потребитель его не переносит, удалите первые 3 байта (EF BB BF) из CSV.

Что насчёт больших файлов?

Браузер без проблем обрабатывает несколько МБ. Для очень больших CSV (100 МБ+) используйте потоковый парсер, например Papa Parse с воркером, или CLI-инструмент.

Числа сохраняются как числа?

CSV → JSON: все значения становятся строками (CSV не типизирован). JSON → CSV: числа становятся неквотированными ячейками CSV. Для типизированного JSON постобрабатывайте столбцы, которые знаете как числовые.

Почему в JSON показываются пустые строки вместо null?

CSV представляет отсутствующие значения как пустые ячейки. Мы сопоставляем их с пустыми строками. Для получения null в JSON постобрабатывайте вывод.

Данные покидают браузер?

Нет. Конвертация выполняется локально; ничего не передаётся на сервер.

Похожие инструменты

Обновлено:

Попробуйте наши ИИ-промпты →