Конвертеры данных · 5 минута чтения
От CSV до JSON: от электронной таблицы к структурированным
CSV выглядит как самый простой формат в вычислениях и ведет себя как один из самых сложных. Преобразование CSV в JSON — это то место, где проявляются эти скрытые правила: запятая внутри поля в кавычках, точка с запятой в качестве разделителя из европейской электронной таблицы, столбец чисел, который должен оставаться текстом. Знание того, что делает синтаксический анализатор, превращает неудачный импорт в двухминутное исправление.
Обновлено
Строка заголовка становится вашими ключами
Первая строка содержит имена свойств JSON, а каждая следующая строка становится объектом. Это означает, что гигиена заголовков — это дизайн схемы: пробелы, повторяющиеся имена и знаки препинания в заголовках создают ключи, которые вы не можете удобно использовать. Перед преобразованием переименуйте в `snake_case` или `camelCase` и убедитесь, что нет двух столбцов с одинаковым именем — в большинстве реализаций повторяющийся заголовок автоматически перезаписывается.
Все, что находится в CSV, является строкой
CSV вообще не имеет типов, поэтому преобразователь решает, как интерпретировать каждый столбец. Числа становятся числами, поэтому вы можете заниматься арифметикой; `true`/`false` становятся логическими значениями; пустые поля становятся `null` или пустой строкой в зависимости от вашего выбора. Ловушка — это идентификаторы: почтовые индексы, номера телефонов, номера счетов и строки версий, такие как `1.10`, должны оставаться строками, иначе вы потеряете ведущие нули и конечный смысл. Если столбец выглядит числовым, но является идентификатором, сохраните его как текст.
Кавычки, запятые и новые строки
В RFC 4180 это было решено несколько десятилетий назад: если поле содержит запятую, кавычку или разрыв строки, оно заключается в двойные кавычки, а внутренние кавычки удваиваются. Любой совместимый парсер (в комплект входит Papa Parse) обрабатывает обернутые поля со встроенными запятыми и многострочными ячейками, не задумываясь. Анализатор, который наивно разбивается по запятым, будет создавать столбцы, которые смещаются, как только одно поле адреса содержит запятую, что является классической ошибкой «почему мои данные смещены на единицу».
Разделители различаются в зависимости от локали: электронные таблицы во многих европейских локалях экспортируют файлы, разделенные точкой с запятой, а TSV использует табуляцию. Если каждая строка сворачивается в один длинный ключ, значит, разделитель неправильный — выберите точку с запятой или табуляцию и повторите попытку.
Откуда берутся файлы CSV (и что они несут)
Экспорт из аналитических инструментов, CRM-систем, биллинговых платформ и баз данных является наиболее распространенным источником и обычно содержит имена клиентов, адреса электронной почты и данные о доходах. Локальное преобразование полностью удаляет эти данные из сети. Преобразователь YamlBox CSV в JSON анализирует в браузере, позволяет выбрать разделитель и обработку типов и продолжает работать при отключенной сети.
Ожидания по размерам
Файл CSV содержит примерно один объект JSON на строку, поэтому преобразованный документ получается больше — ключи повторяются в каждой строке, а красивая печать добавляет отступ сверху. Для файла, достаточно большого, чтобы заставить ваш браузер приостановиться, преобразование массива объектов и последующая минификация дают наименьший практический результат, а преобразование в JSON строк (по одному объекту в строке, без массива) – правильная форма, если следующим потребителем является поток или конвейер журналов.
от CSV до JSON — часто задаваемые вопросы
Почему числа в моем CSV отображаются как строки?
CSV не хранит типы, поэтому преобразователь принимает решение по каждому столбцу. Если значение выглядит числовым, оно обычно преобразуется, но идентификаторы с ведущими нулями или конечными точками должны оставаться строками. Найдите настройку вывода типа и сохраните столбцы идентификаторов в виде текста.
Могу ли я преобразовать файл, разделенный точкой с запятой?
Да — установите разделитель в виде точки с запятой. Во многих случаях экспорта электронных таблиц в Европе используются точки с запятой, когда десятичный разделитель представляет собой запятую, а анализатор CSV, ожидающий запятые, в противном случае вернет один столбец, содержащий всю строку.
Безопасно ли конвертировать CSV с данными клиента в браузере?
Это безопаснее, чем загружать его. При преобразовании на стороне клиента файл никогда не передается, поэтому экспорт, содержащий электронные письма или данные о доходах, остается на вашем компьютере, а инструмент продолжает работать в автономном режиме, что легко проверить, отключившись и снова преобразуя.
Инструменты, упомянутые в этом посте
Еще статьи для чтения
5 минута чтения
От JSON до CSV: выравнивание вложенных данных без потери
Преобразуйте JSON в CSV с помощью вложенных объектов, сведенных в столбцы, согласованных заголовков и цитирования, безопасного для Excel, — и узнайте, какие фигуры вообще не следует сводить.
6 минута чтения
Excel до JSON: превращение книг в структурированные данные
Преобразуйте Excel в JSON в браузере из книг XLSX — заголовки, ряды дат, формулы и несколько листов с пояснениями, ничего не загружая.
5 минута чтения
Таблицы Markdown: генерируйте их вместо подсчета труб
Создавайте таблицы уценки со вкусом GitHub из строк или электронных таблиц — выравнивание, экранирование каналов и случаи, когда таблица является неправильным выбором для вашего README.