Конвертер CSV в JSON

Вставьте CSV (или TSV) слева, получите JSON-массив объектов справа. Заголовки автоопределяются, типы преобразуются автоматически. Без загрузки.

  1. Вставьте CSV в левое текстовое поле.
  2. Нажмите «Преобразовать в JSON». Первая строка считается заголовками.
  3. Скопируйте JSON-массив или скачайте как data.json.
  4. TSV (с разделителями-табуляциями) и другие разделители определяются автоматически PapaParse.
Что это делает?

Парсит CSV (близкий к RFC 4180) в JSON-массив, где ключи объекта совпадают с колонками заголовка. Цитированные поля, встроенные запятые, экранированные двойные кавычки и переводы строк CRLF / LF — всё это поддерживается. Числа, булевы и null-подобные значения («true», «false», пусто) типизируются автоматически. Разделитель определяется автоматически — можно вставлять TSV, точку с запятой или вертикальную черту в качестве разделителя.

Пример

Входной CSV:

name,age,role
Ada,36,engineer
Grace,40,scientist

Выходной JSON:

[
  {"name": "Ada", "age": 36, "role": "engineer"},
  {"name": "Grace", "age": 40, "role": "scientist"}
]

Частые подводные камни CSV и как с ними работать

CSV выглядит просто, но содержит больше пограничных случаев, чем кажется. Эти шаблоны дают неожиданный результат.

  • Встроенные запятые без кавычек. Поле вроде `Smith, John` (без обрамляющих кавычек) делится на две колонки. Заключайте такие поля в двойные кавычки: `"Smith, John"`.
  • Двойные кавычки внутри поля. Внутри цитированного поля буквальная `"` экранируется удвоением: `"He said ""hi"""` декодируется в `He said "hi"`. Экранирование обратным слэшем (`\"`) не стандартно и не поддерживается.
  • Несогласованное число колонок. Строки с меньшим числом колонок получают null для отсутствующих ключей; строки с большим — отображаются как предупреждение парсера. Преобразование завершится, но проверьте вывод.
  • Числовые ID, теряющие ведущие нули. `007` парсится как число 7, не строка «007». Если ведущие нули важны (индексы, телефоны), предобработайте поле кавычками — цитированные значения можно оставить строками, отключив динамическую типизацию ниже по конвейеру.
  • BOM в начале файла. CSV, сохранённые в Excel, часто содержат метку порядка байтов UTF-8 (`\uFEFF`) в начале. Парсер её удаляет, но если вставить сырые байты из шестнадцатеричного редактора, BOM может появиться лишним символом в первом заголовке.
  • Смешанные переводы строк. CRLF (Windows), LF (Unix) и CR (старый Mac) распознаются. Если вывод выглядит как одна гигантская строка, в файле может вообще не быть переводов строк — частое явление при склеивании CSV без `\n`.
Часто задаваемые вопросы

Поддерживаются ли значения с разделителями-табуляциями (TSV)?

Да. PapaParse автоопределяет разделитель по первому килобайту ввода. Табуляции, точки с запятой, вертикальные черты и запятые работают без настройки. Если детектор ошибся (на реальных данных редко), разделите поля чётче или предобработайте.

Что если в CSV нет строки заголовков?

Текущая конфигурация считает первую строку заголовком. Без заголовков добавьте искусственную строку вроде `a,b,c` перед вставкой — или используйте PapaParse в командной строке с `header: false`, если нужен массив массивов.

Как обрабатываются даты?

Остаются строками. Парсер автоматически типизирует только числа и булевы — даты намеренно не парсятся, потому что неоднозначность формата (`01/02/03` — это 2 января в США и 1 февраля в Великобритании) слишком рискованна. Парсите ниже по конвейеру, где известна конвенция источника.

Можно ли преобразовывать очень большие файлы CSV?

До примерно 50 МБ, после браузер начинает тормозить. Узкое место — текстовое поле, не парсер; для больших файлов запускайте PapaParse из командной строки. Библиотека та же.

Загружается ли мой CSV куда-либо?

Нет. Всё работает в браузере — данные парсятся JavaScript на этой странице и никуда не отправляются. Проверьте в инструментах разработчика: ноль сетевых запросов при нажатии «Преобразовать».

Как получить JSON другой формы (вложенный, сгруппированный)?

Этот инструмент даёт плоский массив плоских объектов — это и есть то, что выражает CSV. Для вложенной структуры обработайте вывод скриптом (группировка по колонке, переименование полей с префиксами и т. д.). Попытка закодировать иерархию в CSV обычно создаёт больше проблем, чем решает.