tooly

Конвертировать CSV в JSON онлайн

Вставьте выгрузку CSV и получите массив объектов JSON, готовый для API, скрипта или конфига — разделитель определяется автоматически, ничего не загружается.

Всё работает в браузере — данные никуда не отправляются

Как пользоваться

  1. 1

    Вставьте CSV — первая строка должна быть заголовком.

  2. 2

    Оставьте включённым «определять числа и булевы значения», если не все значения должны остаться строками.

  3. 3

    Скопируйте JSON или скачайте файлом.

Зачем превращать таблицу в JSON

CSV — это то, что выгружают электронные таблицы, CRM, банки и аналитические дашборды. JSON — то, что потребляют веб-API, код на JavaScript, NoSQL-базы и большинство систем конфигурации. Конвертация нужна постоянно: заполнить тестовую базу данными из таблицы, которую ведёт коллега, превратить список товаров в фикстуры для фронтенд-прототипа, передать список редиректов или переводов в скрипт сборки или отправить пачку записей в API, который принимает только JSON.

На выходе получается массив JSON с одним объектом на каждую строку данных. Строка заголовка задаёт имена свойств, так что таблица со столбцами sku, title и price превращается в объекты ровно с этими тремя ключами — их можно сразу перебирать в цикле.

Как парсер читает ваш CSV

CSV выглядит тривиально, пока значение не содержит разделитель. Парсер следует правилам RFC 4180 — самого близкого к стандарту документа, который есть у CSV:

  • Поле в двойных кавычках может содержать разделитель, переносы строк и кавычки. "Smith, John" остаётся одним значением.
  • Кавычка внутри поля в кавычках записывается дважды: "6"" pipe" превращается в 6" pipe.
  • Строки могут заканчиваться на CRLF в стиле Windows или на LF в стиле Unix; обрабатываются оба варианта.
  • Метка порядка байтов в начале файла, которую Excel добавляет при сохранении в CSV UTF-8, удаляется, чтобы она не прилипла к имени первого столбца.
  • Полностью пустые строки пропускаются.

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

Пробелы вокруг имён в заголовке обрезаются, так что price с пробелами становится ключом price. Значения в строках данных сохраняются в точности как записаны, включая пробелы в начале и в конце.

Типизированные значения или строки

Когда включена опция «Определять числа и булевы значения», каждая ячейка проверяется по короткому списку правил:

  • Обычные целые и десятичные числа вроде 42, -7 и 19.99 становятся числами JSON, если в них не больше 15 цифр.
  • Ровно true и false в нижнем регистре становятся булевыми значениями. TRUE, Yes или 1 остаются как есть.
  • Пустая ячейка становится null.
  • Всё остальное, включая более длинные строки из цифр, 1.5e3, +5, .5, 1,234 и даты, остаётся строкой.

Для большинства данных это удобно, но числа в JSON не хранят форматирование, поэтому некоторые значения после типизации меняют смысл:

  • Ведущие нули исчезают. Американский почтовый индекс 02134 превращается в 2134, а артикул 007 — в 7.
  • Длинные строки цифр потеряли бы точность. Числа в JavaScript точны лишь примерно до 15 значащих цифр, поэтому значения с большим числом цифр, например 20-значный номер заказа или номер карты, сохраняются строками, а не округляются.
  • Телефонные номера без плюса и пробелов тоже становятся числами.

Если в каком-то столбце хранятся идентификаторы, а не количества, отключите опцию и преобразуйте немногие действительно числовые поля в своём коде. При отключённой опции пустые ячейки становятся пустыми строками, а не null.

Если результат выглядит неправильно

  • Всё попадает в один ключ. Разделитель не определился — обычно потому, что в заголовке другой разделитель, чем в данных, или его нет вовсе. Проверьте первую строку.
  • Значения сдвинуты на один столбец. Поле содержит разделитель, но не заключено в кавычки. Выгрузите файл заново из исходного приложения, а не правьте вручную: таблицы берут такие поля в кавычки автоматически.
  • Лишние столбцы пропадают. Ключи берутся только из заголовка, поэтому ячейки за последним столбцом заголовка отбрасываются. Строки, где ячеек меньше, получают для недостающих null или пустую строку.
  • Два столбца — один ключ. Если имя в заголовке повторяется, в каждом объекте более поздний столбец перезаписывает более ранний. Сначала переименуйте один из них.
  • Странные символы вроде é. Файл сохранён в устаревшей кодировке. Пересохраните его как CSV UTF-8 и вставьте снова.

Работа с результатом

JSON выводится с отступом в 2 пробела — это удобно и для чтения, и для коммита в репозиторий. Чтобы минифицировать его для API-запроса или изменить отступы, пропустите его через JSON-форматировщик. Чтобы после правок пройти обратный путь, JSON в CSV заново соберёт таблицу из массива. Конвертация целиком выполняется на странице, что важно, когда в выгрузке есть имена клиентов, email-адреса или зарплаты.

Вопросы и ответы

Какие разделители поддерживаются?

Запятая, точка с запятой, таб и вертикальная черта определяются автоматически по первой строке.

Поля в кавычках обрабатываются?

Да — кавычки, встроенные запятые, переносы строк внутри кавычек и удвоенные кавычки обрабатываются по RFC 4180.

Что делает «определять числа и булевы значения»?

«42» становится 42, «true» становится true, пустые ячейки становятся null. Строки из цифр длиннее 15 знаков остаются строками, чтобы сохранить точное значение. Отключите опцию, чтобы всё осталось строками — например, для почтовых индексов с ведущими нулями.

Мои данные загружаются на сервер?

Нет. Разбор происходит в браузере.

Можно конвертировать файлы Excel?

Сначала сохраните лист как CSV (Файл → Сохранить как → CSV UTF-8), затем вставьте его сюда.

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