Конвертер CSV в JSON
Вставьте CSV (или TSV) слева, получите JSON-массив объектов справа. Заголовки автоопределяются, типы преобразуются автоматически. Без загрузки.
- Вставьте CSV в левое текстовое поле.
- Нажмите «Преобразовать в JSON». Первая строка считается заголовками.
- Скопируйте JSON-массив или скачайте как data.json.
- 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 обычно создаёт больше проблем, чем решает.