Конвертер CSV в JSON
Конвертируйте CSV в JSON в браузере. RFC 4180, определение типов, заголовок, безопасность больших целых. 100% приватно, без загрузки.
Настройки · , · auto · LF · header · no BOM · flatten
Что такое JSON и зачем конвертировать из CSV?
JSON (JavaScript Object Notation) — универсальный формат для ответов API, конфигурации и обмена структурированными данными: каждый современный язык программирования, каждая БД и каждый веб-фреймворк имеют первоклассную поддержку JSON. CSV (значения, разделённые запятыми), напротив, — старейший и самый широко поддерживаемый табличный формат: каждое табличное приложение, каждый экспорт БД и каждый аналитический инструмент могут его создать. Конвертация между ними — одна из самых частых рутинных задач в data engineering: вы получаете CSV из таблицы, дампа БД или стороннего экспорта, а нужен JSON, чтобы накормить API, гидратировать фронтенд или загрузить в NoSQL-хранилище. Этот инструмент сделан под этот путь конвертации и обрабатывает четыре сценария, которые большинство онлайн-конвертеров портят.
Четыре важных отличия этого инструмента от типичных онлайн-конвертеров CSV-в-JSON:
**1. Парсер RFC 4180 на конечном автомате.** CSV выглядит просто, но правила экранирования тонкие: поле в двойных кавычках может содержать запятые, вложенные переносы строк и экранированные двойные кавычки (удвоением, как ""). Наивные парсеры split-by-comma ломаются на реальных данных — адресах с запятыми, многострочных текстовых полях и значениях в кавычках с кавычками внутри. Этот инструмент реализует полноценный парсер на конечном автомате по RFC 4180 (спецификация IETF для CSV), корректно обрабатывая поля в кавычках, вложенные разделители, вложенные окончания строк и экранированные кавычки в обе стороны. Вывод обратим через модуль csv в Python, PostgreSQL COPY, AWS S3 SELECT и любой совместимый парсер.
**2. Определение типов с безопасностью больших целых.** С включённым «Определять типы» числовые строки становятся числами, true/false — булевыми, пустые ячейки — null. Но конвейер обнаружения имеет две важные защиты: строки с ведущими нулями (007, 0123) сохраняются как строки, потому что ведущие нули указывают на идентификаторы — преобразование в число молча обрежет их. И целые выше 2^53 - 1 (9007199254740991) тоже сохраняются как строки, чтобы избежать потери точности IEEE 754. Snowflake-ID Twitter, ID Discord, поля Long в MongoDB и resourceVersion в K8s — все остаются точными вместо молчаливого округления. ISO-строки дат намеренно сохраняются как строки — у JSON нет нативного типа дат.
**3. Автоматические имена заголовка или использование первой строки.** С включённым «Заголовок» (по умолчанию) первая строка трактуется как имена колонок, и каждая последующая становится JSON-объектом с этими ключами. С отключённым «Заголовок» парсер автоматически именует колонки col1, col2, col3 — полезно для сырых выгрузок без строки заголовка. Строка чипов разделителя покрывает четыре самых частых разделителя: запятая (по умолчанию RFC 4180), точка с запятой (локали Excel-EU), Tab (TSV из Unix-инструментов и хранилищ данных) и вертикальная черта (поля с большим числом запятых). Выбирайте чип и разбирайте — без ручной настройки для типичных реальных CSV.
**4. 100% приватность в браузере.** Ваши CSV-данные — часто содержат PII пользователей, внутренние экспорты БД, записи клиентов и production-экспорты — никогда не покидают браузер. Никакие данные не отправляются на сервер, нет логирования, нет аналитики, перехватывающей ввод. Это можно проверить через вкладку Network браузера. Это единственный безопасный способ обработки чувствительных данных в онлайн-инструменте. Посмотрите обратное направление через «Поменять направление» или используйте парный конвертер JSON в CSV, когда ваша цель — CSV. Нужно проверить JSON-вывод перед использованием? Попробуйте наш форматировщик JSON.
Сильные стороны JSON — точные типы, нативная вложенность и строгая спецификация, парсящаяся одинаково везде — правильный формат, когда машина потребляет данные. Сильные стороны CSV — универсальность и человекочитаемость — правильный формат, когда человек открывает таблицу. Правильный инструмент зависит от потребителя: человек читает таблицу — CSV, машина потребляет API — JSON. Этот конвертер обеспечивает мост в обоих направлениях.
// Input CSV (comma + LF, header on, infer types on)
id,name,active,score
1,Alice,true,98.5
2,Bob,false,87
3,Carol,true,
// Output JSON
[
{ "id": 1, "name": "Alice", "active": true, "score": 98.5 },
{ "id": 2, "name": "Bob", "active": false, "score": 87 },
{ "id": 3, "name": "Carol", "active": true, "score": null }
]
// Same input with Header off (no first-row keys)
1,Alice,true,98.5
2,Bob,false,87
// Becomes
[
{ "col1": 1, "col2": "Alice", "col3": true, "col4": 98.5 },
{ "col1": 2, "col2": "Bob", "col3": false, "col4": 87 }
] Ключевые возможности
Парсер RFC 4180 на конечном автомате
Строгий парсер на конечном автомате по спецификации CSV от IETF: корректная обработка полей в кавычках, вложенных разделителей, вложенных CR/LF и экранированных двойных кавычек (удвоением). Вывод чисто проходит round-trip через Python csv, PostgreSQL COPY и AWS S3 SELECT.
Определение типов с безопасностью больших целых
Включённое «Определять типы» превращает числовые строки в числа, true/false — в булевы, пустые ячейки — в null. Целые выше 2^53 - 1 остаются строками, чтобы избежать потери точности IEEE 754; строки с ведущими нулями (007, 0123) остаются строками, чтобы сохранить семантику идентификатора.
Заголовок вкл./выкл. с автоматическими именами
Включённый «Заголовок» (по умолчанию) использует первую строку как ключи JSON. Отключённый «Заголовок» автоматически именует колонки col1, col2, col3 по порядку — полезно для сырых выгрузок и машинно-сгенерированных CSV без строки заголовка. Автоматические имена детерминированы и удобны для конвейера.
Запятая, точка с запятой, Tab, вертикальная черта
Чипы разделителя в один клик для четырёх самых частых разделителей: `,` (по умолчанию RFC 4180), `;` (локали Excel-EU), `\t` (TSV из Unix-инструментов, BigQuery, Snowflake) и `|` (поля свободного текста с большим числом запятых). Парсер немедленно переключает режимы — конвертировать файлы заранее не нужно.
Обнаружение больших целых
Целые выше 2^53 находятся при разборе и сохраняются как строки в JSON — snowflake-ID Twitter, ID Discord, поля Long в MongoDB и resourceVersion в K8s остаются точными вместо молчаливого округления типом Number IEEE 754 в JavaScript.
Двунаправленность через Swap
Одна кнопка «Поменять направление» переворачивает конвертацию на месте: вход становится JSON, вывод — CSV, текущий текст сохраняется. Прогоняйте данные round-trip в обе стороны, чтобы проверить конвертацию без потерь перед отправкой в конвейер.
Примеры
Экспорт таблицы с заголовком
id,name,email,role 1,Alice,alice@example.com,admin 2,Bob,bob@example.com,editor 3,Carol,carol@example.com,viewer 4,Dan,dan@example.com,viewer
Стандартный CSV из таблицы. С включённым «Заголовок» и «Определять типы» получаете чистый типизированный JSON: целые остаются целыми, булевы и null определяются автоматически.
Журнал с разделителем Tab (TSV)
ts event user duration 2026-05-09T10:00:00Z signup alice 142 2026-05-09T10:01:00Z login alice 87 2026-05-09T10:02:00Z checkout alice 312 2026-05-09T10:03:00Z logout alice 44
Выберите `\t` (Tab) в качестве разделителя. По умолчанию «Заголовок» включён и автоматически использует первую строку как ключи.
Excel-EU CSV (точка с запятой, CRLF)
id;name;price 1;Alice;1234,56 2;Bob;9876,54 3;Carol;42,00
Excel в локалях DE/FR/IT/ES выдаёт `;` как разделитель, потому что запятая — десятичный знак. Выберите `;` в чипе разделителя — парсер сделает остальное.
Запятые внутри полей и экранированные кавычки
name,role,note "Smith, Jr.",admin,"He said ""hi""" "Doe, Jane",editor,"Two lines"
Стандартное экранирование RFC 4180: поля в кавычках могут содержать разделители и экранированные кавычки (удвоением). Парсер — конечный автомат, он никогда не делит внутри кавычек.
CSV с большими целыми ID
id,event,user 9007199254740993,signup,alice 9007199254740994,login,bob 9007199254740995,checkout,carol
Большие целые превышают безопасный диапазон JavaScript (2^53 - 1). С включённым «Определять типы» парсер находит это и сохраняет значение как строку, чтобы сохранить точность — без обрезания.
CSV без заголовка
1,Alice,admin 2,Bob,editor 3,Carol,viewer 4,Dan,viewer
Отключите «Заголовок»; колонки автоматически именуются `col1`, `col2`, `col3`. Используйте это для сырых выгрузок без строки заголовка.
Как использовать
- 1
Вставьте CSV
Введите или вставьте CSV в поле ввода выше. Инструмент принимает данные с разделителем «запятая», «точка с запятой», Tab и вертикальная черта. Можно нажать «Загрузить пример», чтобы попробовать на образце — экспорте таблицы, журнале TSV или Excel-EU CSV с точкой с запятой.
- 2
Выберите разделитель (или Tab)
Нажмите `,` (по умолчанию), `;` (Excel-EU точка с запятой), `\t` (TSV) или `|` (вертикальная черта), чтобы переключить разделитель одним кликом. Откройте панель «Настройки» для тонкого контроля: «Заголовок» вкл./выкл. и «Определять типы» вкл./выкл. Отключённый «Заголовок» автоматически именует колонки col1, col2, col3.
- 3
Скопируйте или скачайте JSON
Нажмите «Скопировать», чтобы поместить JSON в буфер обмена, или «Скачать», чтобы сохранить как .json для кода, API или конвейера. Для round-trip нажмите «Поменять направление», чтобы преобразовать JSON обратно в CSV на месте.
Типичные ловушки конвертации
Запятая внутри поля без кавычек в источнике
Если ваш CSV построен вручную через наивный join(','), любое поле с запятой (Smith, Jr. или 1,234.56) сломает границы колонок — парсер увидит лишние колонки, где должна быть одна. Решение — обернуть проблемное поле в двойные кавычки по RFC 4180. Этот инструмент корректно обрабатывает поля в кавычках, но исходный CSV должен использовать корректное экранирование.
name,role Smith, Jr.,admin // Parser reads 3 columns: "Smith", " Jr.", "admin"
name,role "Smith, Jr.",admin // Parser reads 2 columns: "Smith, Jr.", "admin"
Excel-EU точка с запятой разобрана как запятая
Европейские локали Excel (Германия, Франция, Испания, Италия и др.) выдают CSV с разделителем «точка с запятой», потому что запятая зарезервирована за десятичным разделителем. Если оставить разделитель `,` (по умолчанию), каждая строка схлопывается в одну колонку с точками с запятой внутри. Выберите чип `;` — парсер переключится в режим точки с запятой и выдаст корректные колонки.
// Wrong delimiter (default comma) on Excel-EU file
id;name;price
1;Alice;1234,56
// Each row becomes one column: { col1: "1;Alice;1234,56" } // Correct: pick `;` Delimiter chip
id;name;price
1;Alice;1234,56
// Output: { id: 1, name: "Alice", price: "1234,56" } Большие целые ID теряют точность после JSON.parse
Snowflake-ID Twitter, ID Discord и другие 64-битные целые превышают безопасный диапазон JavaScript (2^53 - 1) и теряют точность, когда JSON.parse() читает их как числа. С включённым «Определять типы» инструмент находит значения за безопасной границей и сохраняет их как строки, оставляя цифры точными. Используйте BigInt("9007199254740993") в коде, чтобы преобразовать обратно в числовой тип.
// Without big-int detection
{"id": 9007199254740993}
// JavaScript reads as 9007199254740992 (precision lost) // With Infer types on, big integers stay as strings
{"id": "9007199254740993"}
// Use BigInt(value) in code to preserve precision Строка заголовка содержит пробелы
Если заголовок CSV — `id, name, email` (с пробелами после запятых), ключи JSON становятся "id", " name", " email" — включая ведущий пробел. Парсер сохраняет заголовок ровно как дано, по RFC 4180. Решение — либо очистить исходный CSV перед вставкой, либо переименовать ключи downstream (jq 'with_entries(.key |= ltrimstr(" "))' или JavaScript Object.fromEntries(Object.entries(o).map(([k,v]) => [k.trim(), v]))).
id, name, email 1, Alice, alice@example.com // Output keys: "id", " name", " email" (with leading spaces)
id,name,email 1,Alice,alice@example.com // Output keys: "id", "name", "email" (clean)
Несогласованная длина строк
Когда строки в CSV имеют разное число колонок (одни с концевыми запятыми, другие без), парсер заполняет недостающие ячейки пустыми строками (или null, когда «Определять типы» включено) и отбрасывает лишние сверх длины заголовка. Появляется предупреждение Schema notes, чтобы вы знали, что строки нормализованы. Обычно это нормально, но проверьте вывод, если downstream-потребители ждут строгую форму строк.
name,role,note Alice,admin Bob,editor,first day // Row 1 is short by one cell
// Output (note empty/null cell in row 1)
[
{ "name": "Alice", "role": "admin", "note": null },
{ "name": "Bob", "role": "editor", "note": "first day" }
] Строки дат неожиданно преобразуются
ISO 8601 строки дат (2026-05-09T10:00:00Z) намеренно сохраняются как строки в JSON-выводе — у JSON нет нативного типа дат, и преобразование породило бы либо JavaScript-объект Date, который не переживает сериализацию, либо числовой epoch, теряющий информацию о часовом поясе. Это по задумке. Разбирайте даты в момент использования через new Date(value) или вашу библиотеку дат. Не отключайте «Определять типы» только ради сохранения дат — это также сохранит числа как строки.
// Expecting a Date object in the output ts,event 2026-05-09T10:00:00Z,signup // Output ts is the string "2026-05-09T10:00:00Z", NOT a Date
// Correct: parse at the point of use in your code const rows = JSON.parse(output); const when = new Date(rows[0].ts); // when is now a Date object
Типичные сценарии
- Экспорт таблицы в импорт API
- Вставьте CSV, экспортированный из Excel, Google Sheets или Numbers, и получите массив JSON-объектов, готовый для POST в REST API, GraphQL-мутации или эндпоинта массового импорта. Самый частый сценарий — аналитики выдают данные таблицы, инженерам нужен типизированный JSON для бэкенда.
- Excel-экспорт в инструменты
- Конвертируйте экспорты Excel CSV (включая Excel-EU файлы с точкой с запятой через чип `;`) в JSON для обработки JavaScript-инструментами, jq-скриптами или любой системой, читающей JSON. Парсер корректно обрабатывает удаление BOM и окончания строк CRLF, чтобы экспорты Excel не ломались на первой строке.
- TSV-журнал в аналитику
- Журналы с разделителем Tab из экспортов BigQuery, разгрузок Snowflake, конвейеров Vector или Unix-инструментов (cut, awk) часто приходят как .tsv. Выберите чип Tab — и получите типизированный массив JSON, готовый для ad-hoc анализа, загрузки в дашборд или трансформации в стадии конвейера.
- CSV-дамп БД в ETL
- Конвертируйте вывод PostgreSQL COPY TO CSV, MySQL SELECT INTO OUTFILE или любой CSV-дамп БД в JSON для загрузки в NoSQL-хранилище, подачи в JavaScript ETL-конвейер или отправки в BigQuery как line-delimited JSON. Обнаружение больших целых сохраняет числовые ID, превышающие безопасный диапазон JavaScript.
- Потребление CSV-результатов тестов Postman/Newman
- Прогоны тестов Postman экспортируют CSV-отчёты с pass/fail на запрос. Конвертируйте в JSON для программного потребления — подавайте в дашборд статуса, конвейер уведомлений или агрегатор результатов. Строки разной формы (упавшие тесты имеют дополнительную колонку error) обрабатываются заполнением пустых/null.
- Маленький CSV в быстрый JSON-конфиг
- Есть маленький CSV с константами — коды валют, названия стран, продуктовые SKU — и нужен JSON-массив для конфигурационного файла или JavaScript-константы? Вставьте, скопируйте, вставьте. С включённым «Определять типы» числа и булевы типизированы корректно; с включённым «Заголовок» получаете массив объектов с именованными полями, готовый для .json.
Технические детали
- Внутренности парсера RFC 4180 на конечном автомате
- Парсер — полноценная реализация конечного автомата по RFC 4180. Состояния включают UnquotedField, QuotedField, AfterQuote, RowEnd и EndOfInput. Парсер корректно обрабатывает поля в кавычках с разделителем внутри, вложенные CR/LF в полях в кавычках, экранированные двойные кавычки (удвоением, как "") и концевые переносы строк. На выходе — round-trip без потерь через модуль csv в Python, PostgreSQL COPY, AWS S3 SELECT и любой совместимый парсер. Конечный автомат разделитель-aware, поэтому переключение с `,` на `;` или `\t` не меняет семантику экранирования — только разделитель полей.
- Алгоритм определения типов
- С включённым «Определять типы» каждая ячейка проходит упорядоченный конвейер обнаружения. Во-первых, пустая ячейка становится JSON null. Во-вторых, литералы true и false становятся JSON-булевыми. В-третьих, строки с ведущими нулями (^0[0-9]+$) сохраняются как строки, чтобы сохранить семантику идентификатора — преобразование в числа молча обрежет ведущие нули. В-четвёртых, целочисленные литералы проверяются по границе безопасного целого (-2^53+1 до 2^53-1); значения вне диапазона сохраняются как строки, чтобы избежать потери точности IEEE 754. В-пятых, ISO 8601 строки дат находятся регуляркой и намеренно сохраняются как строки — у JSON нет нативного типа дат. Всё, что прошло пять защит, преобразуется через Number() (числовое) или сохраняется как строка (всё остальное).
- Удаление BOM и обработка кодировки
- Весь ввод трактуется как UTF-8. Необязательный UTF-8 BOM (0xEF 0xBB 0xBF) молча удаляется из первой ячейки первой строки, когда присутствует — это предотвращает попадание байтов BOM как лишнего символа в начале имени первой колонки (Excel в Windows часто выдаёт BOM, ломая наивные парсеры). Другие кодировки (Windows-1252, ISO-8859-1) автоматически не определяются; браузерный File API уже декодировал бы байты как UTF-8 к моменту, когда текст попадает в инструмент. Если у вас вход не в UTF-8, сначала конвертируйте его через iconv или опцию экспорта кодировки вашего редактора перед вставкой.
Лучшие практики
- Явно выбирайте разделитель для не-запятых
- Не полагайтесь на авто-определение. Если в CSV точки с запятой (Excel-EU), табы (TSV из BigQuery, Snowflake или Unix-инструментов) или вертикальные черты (поля с большим числом запятых), нажмите соответствующий чип разделителя перед вставкой. Парсер разделитель-aware: переключение чипа немедленно перезапускает разбор. Это убережёт от самой частой неудачи CSV-в-JSON, когда каждая строка схлопывается в одну ячейку, потому что парсер использовал не тот разделитель.
- Держите «Определять типы» включённым для типизированного JSON
- С включённым «Определять типы» (по умолчанию) получаете типизированный JSON: числа как числа, булевы как булевы, null там, где пустые ячейки. Этого хочет большинство потребителей — API, фронтенды, JavaScript-код. Отключайте «Определять типы» только тогда, когда нужно каждую ячейку как строку (downstream-потребители со строгой типизацией, валидационные конвейеры, сравнивающие точные исходные байты). У конвейера обнаружения есть защиты для строк с ведущими нулями, больших целых и ISO-дат, поэтому идентификаторы и даты остаются в безопасности даже с включённым определением.
- Закавычивайте ID как строки в upstream CSV
- Если CSV генерируется БД или конвейером, который вы контролируете, выводите большие числовые ID (snowflake-ID Twitter, ID Discord, resourceVersion в K8s) как закавыченные CSV-строки ("9007199254740993"), чтобы они чисто прошли через определение типов. Парсер сохранит их как строки в любом случае (обнаружение больших целых ловит значения выше 2^53 - 1), но явное закавычивание — самый надёжный upstream-контракт и устраняет любую двусмысленность точности.
- Строка заголовка должна быть первой строкой
- Включённый «Заголовок» (по умолчанию) автоматически определяет первую строку как имена колонок. Если в CSV есть комментарии, пустые строки или метаданные перед заголовком, удалите их перед вставкой — парсер не пропускает ведущие не-данные строки. Для CSV без заголовка (сырые экспорты, машинно-сгенерированные дампы) отключите «Заголовок», и колонки будут автоматически именованы col1, col2, col3 по порядку. Не пытайтесь подделать заголовок, добавив его перед файлом без заголовка; либо отключите «Заголовок», либо исправьте источник.
- Используйте режим Stringify для round-trip CSV → JSON → CSV
- Если вы планируете прогнать данные round-trip через оба направления (CSV → JSON → CSV), обратное направление (JSON → CSV) требует режима Stringify, чтобы любые вложенные массивы или объекты выжили без потерь. Режим Flatten в обратном направлении выдаёт ключи через точку (customer.address.city), которые невозможно безупречно восстановить парсером CSV. См. наш конвертер JSON в CSV для полной справки по обратному направлению и заметок по тестированию round-trip.
Часто задаваемые вопросы
Что делает этот инструмент?
Загружаются ли мои данные куда-либо?
Как работает определение типов?
Почему большие целые сохраняются как строки?
Мой CSV использует точку с запятой — как его разобрать?
Поддерживается ли TSV (с разделителем Tab)?
Что делать, если в моём CSV нет строки заголовка?
Обрабатываются ли поля в кавычках с запятыми внутри?
Почему мои даты сохраняются как строки?
Что произойдёт, если строки имеют разную длину?
Какого размера файл можно вставить?
Можно ли пройти round-trip JSON → CSV → JSON?
Похожие инструменты
Все инструменты →Base64 декодер и кодировщик
Кодирование и форматирование
Декодирование и кодирование Base64 онлайн бесплатно. Преобразование в реальном времени с полной поддержкой UTF-8 и эмодзи. Полная приватность — работает в браузере. Без регистрации.
JSON Diff и сравнение
Кодирование и форматирование
Сравнивайте два JSON-файла мгновенно в браузере. Side-by-side подсветка, вывод JSON Patch (RFC 6902), игнорирование шума вроде timestamp и ID. 100% приватно, без загрузки.
Форматировщик и валидатор JSON
Кодирование и форматирование
Форматирование, проверка и улучшение читаемости JSON прямо в браузере. Бесплатный онлайн-инструмент с проверкой синтаксиса, поиском ошибок, минификацией и копированием в один клик. Полная приватность.
Валидатор JSON Schema
Кодирование и форматирование
Проверяйте JSON по любой JSON Schema мгновенно в браузере. Поддержка Draft 2020-12, 2019-09 и Draft-07 с точными путями ошибок. 100% приватно — без загрузки, без аккаунта, бесплатно.
Конвертер JSON в CSV
Кодирование и форматирование
Конвертируйте JSON в CSV в браузере. Пресеты RFC 4180, Excel-EU, TSV, Pipe. Flatten или Stringify. 100% приватно, без загрузки.
Конвертер JSON в YAML
Кодирование и форматирование
Вставьте JSON, получите YAML мгновенно. Live-конвертация в браузере. Готово для K8s/Compose, отступ 2/4 пробела, умное экранирование. 100% приватно, без загрузки.