CSV в JSON
Конвертируйте данные CSV и TSV в JSON с корректной обработкой полей в кавычках, вложенных запятых и переносов строк. Дополнительное определение типов превращает числа и логические значения в настоящие значения JSON.
- Файлы никогда не покидают ваше устройство
- Бесплатно, без регистрации
- Без водяных знаков
- Работает офлайн после загрузки
Как пользоваться: csv в json
- 1
Вставьте CSV
Вставьте данные прямо из таблицы или введите их вручную.
- 2
Настройте параметры
Выберите разделитель, укажите, является ли первая строка заголовком, и нужно ли определять типы данных.
- 3
Скопируйте JSON
Скопируйте результат или скачайте его в виде файла .json.
Почему разбиение по запятым портит реальные CSV-файлы
CSV кажется тривиальным для разбора — разбить каждую строку по запятым, первую строку считать заголовками, — пока в реальных данных не встретится значение, содержащее собственную запятую, а это происходит постоянно в настоящих экспортах из таблиц: адрес вида «123 Main St, Apt 4», название компании вида «Smith, Jones & Co» или описание товара, содержащее перечисление. Спецификация CSV, формализованная как RFC 4180, решает эту проблему, позволяя заключать поле в двойные кавычки: внутри них запятые, переносы строк и даже символы самих кавычек (экранируемые удвоением) считаются просто данными, а не структурой. Парсер, который наивно разбивает строку по каждой запятой, полностью игнорируя кавычки, портит именно такие строки — разбивая «Smith, Jones & Co» на два отдельных столбца, — причём обычно делает это незаметно, без единой ошибки, сигнализирующей, что что-то пошло не так, — именно это и делает такую ошибку опасной, а не просто раздражающей.
Правильный разбор с учётом кавычек отслеживает, находится ли считыватель в данный момент внутри поля в кавычках, и игнорирует символы разделителя и переноса строки до закрывающей кавычки — это единственный способ корректно восстановить поля, которые на законных основаниях содержат символы, иначе принимаемые за структуру.
Что определение типов делает верно, а где сознательно проявляет осторожность
Каждое значение в исходном CSV-файле — это текст, поскольку у CSV нет собственного понятия числа, логического значения или null: ячейка со значением `42` и ячейка со значением `hello` хранятся одинаково, как набор символов. Определение типов — это процесс угадывания, какие строки «на самом деле» должны были быть числами, значениями true/false или null, и соответствующего их преобразования, чтобы итоговый JSON содержал по-настоящему типизированные значения, а не всё подряд в кавычках как строку.
Однако угадывание должно быть осторожным, потому что немало значений, выглядящих как числа, вовсе не предназначены для того, чтобы становиться числами. Ведущий ноль — `007`, `042` — обычно указывает на идентификатор или код с дополнением, где начальный ноль значим и был бы незаметно уничтожен при преобразовании в число, ведь `7` и `007` — одно и то же число, но совершенно разные идентификаторы. Номер телефона вида `+44 20 7946 0958` выглядит отчасти числовым, но не является арифметическими данными. Значения за пределами безопасного диапазона целых чисел JavaScript теряют точность при любом преобразовании в число. Этот инструмент оставляет всё перечисленное строками именно потому, что ошибка в угадывании здесь означает незаметное повреждение данных, которое легко не заметить ещё очень долго.
Почему повторяющиеся и пустые заголовки столбцов требуют особой обработки
Объект JSON не может иметь два ключа с одинаковым именем — второй из встретившихся просто перезаписывает первый, незаметно отбрасывая данные целого столбца, и нигде не возникает ни одной ошибки. Экспорт из таблиц порождает повторяющиеся заголовки чаще, чем можно подумать: отчёт с двумя столбцами «Итого» разного назначения или объединённый экспорт из двух источников, в каждом из которых оказался столбец «Имя». Обнаружение дубликатов и переименование второго вхождения в `name_2` сохраняет данные каждого столбца вместо того, чтобы незаметно потерять тот из них, что оказался первым в объекте строки. Пустые заголовки обрабатываются так же и по той же причине: в JSON нет способа представить ключ, являющийся просто пустой строкой, как значимое, адресуемое поле.
Часто задаваемые вопросы
Обрабатываются ли запятые внутри полей в кавычках?
Да. Парсер корректно следует стандарту RFC 4180: поля в кавычках могут содержать запятые, переносы строк и экранированные кавычки (записываются как ""). Инструменты, которые просто разбивают строку по запятым, портят именно такие данные — как правило, без единой ошибки.
Что определение типов делает с ведущими нулями?
Оставляет как есть. `007`, `+44` и значения, выходящие за пределы безопасного диапазона целых чисел JavaScript, остаются строками, поскольку почти всегда это идентификаторы, номера телефонов или почтовые индексы — преобразование их в числа незаметно уничтожило бы данные. Конвертируются только однозначные числа, логические значения и null.
Что происходит с повторяющимися именами столбцов?
Они делаются уникальными — второй столбец `name` превращается в `name_2`, — потому что два одинаковых ключа в объекте JSON незаметно перезаписали бы друг друга. Пустые заголовки становятся `column_1`, `column_2` и так далее.
Можно ли конвертировать файл Excel напрямую?
Пока нет — сначала сохраните или экспортируйте его в формат CSV (Файл → Сохранить как → CSV в Excel и Google Таблицах). Учтите, что во многих европейских локализациях Excel по умолчанию используется точка с запятой в качестве разделителя; если столбцы слипаются в один, переключите разделитель в настройках.
Загружаются ли мои данные куда-либо?
Нет. Разбор данных полностью происходит в вашем браузере, и это важно, поскольку экспорт CSV обычно содержит как раз те данные о клиентах, финансах или сотрудниках, которые не стоит передавать на чужой сервер.
Частые задачи: csv в json
Вам также может понадобиться
JSON в CSV
Превращение массивов JSON в строки таблицы
Форматтер JSON
Мгновенное форматирование, валидация и минификация JSON
Удаление повторяющихся строк
Удаляйте дубликаты, сортируйте и приводите списки в порядок
Excel в CSV
Конвертация таблиц XLSX в CSV, по листам
Markdown в HTML
Конвертация Markdown в чистый HTML с живым предпросмотром