CSV открылся одним столбцом или съехал: как проверить разбор и что попадёт в JSON
Коротко: Просмотрщик и конвертер CSV разбирает вставленный текст или выбранный .csv-файл с разделителем запятая, точка с запятой или табуляция (или с автоопределением), понимает поля в двойных кавычках, показывает первые 200 строк данных таблицей и преобразует все разобранные строки в JSON-массив объектов. Лимиты: 10 000 000 символов, 100 000 строк и около 500 столбцов.
Знакомая ситуация: выгрузка из Excel или 1С открывается сплошной строкой, а адрес с запятой разваливается на два столбца. Обычно виноваты неверный разделитель или сломанная кавычка. Здесь можно увидеть, как файл читается на самом деле, до того как его получит ваш код.
Главное о просмотрщике
- В списке «Разделитель» есть четыре варианта: «Определить автоматически» (по умолчанию), «Запятая», «Точка с запятой» и «Табуляция»; других символов, например вертикальной черты, нет.
- Автоопределение читает только первую строку, считает запятые, точки с запятой и табуляции вне кавычек и берёт самый частый символ; при равенстве и при отсутствии разделителей выбирается запятая.
- Флажок «Первая строка — заголовок» включён по умолчанию: тогда первая строка задаёт названия столбцов и не считается данными.
- Кнопка «Показать таблицу» выводит первые 200 строк данных, а если их больше, добавляет пометку с реальным числом строк.
- Кнопка «Преобразовать в JSON» выдаёт массив объектов с отступом в 2 пробела, по одному объекту на строку данных, для всех строк; каждое значение остаётся строкой.
- Ввод отклоняется, если в нём больше 10 000 000 символов (не байт), больше 100 000 строк с учётом заголовка или около 500 столбцов в строке.
- Скрипт инструмента не делает сетевых запросов: вставленный текст и выбранный файл читаются в браузере и никуда не отправляются.
Как пользоваться
- Вставьте текст в поле «Данные CSV» или нажмите «Выбрать CSV-файл»: содержимое файла попадёт в то же поле, а строка состояния подтвердит загрузку.
- Оставьте «Определить автоматически» и переключитесь на «Запятая», «Точка с запятой» или «Табуляция», если таблица получилась в один широкий столбец.
- Не снимайте «Первая строка — заголовок», если в первой строке названия; снимите, если там уже данные.
- Нажмите «Показать таблицу», проверьте ячейки, затем «Преобразовать в JSON» и «Копировать JSON». Любое изменение полей очищает таблицу и JSON, поэтому после правок нажмите кнопку снова.
Как строки превращаются в JSON
Каждая запись становится объектом, ключи которого берутся из строки заголовков. Короткие строки добираются пустыми строками, числа и даты не распознаются.
ширина = число ячеек в самой длинной строке
ключ[i] = заголовок i без пробелов по краям
или «Столбец i», если он пуст (i с 1)
повторы получают « (2)», « (3)» ...
объект = { ключ[i]: строка[i] или "" } для i = 1..ширина
Округления нет, потому что ни одно значение не разбирается как число. Единственное изменение текста: пробелы по краям названий столбцов обрезаются.
Пример: выгрузка прайса
Исходные данные при включённой «Первая строка — заголовок» и автоопределении разделителя:
Артикул;Название;Цена
A-101;"Стул, дуб";4 500,00
A-102;"Лампа ""Уют""";1 250,50
| Фрагмент | Как читается | Результат в JSON |
|---|---|---|
| Первая строка | Автоопределение находит 2 точки с запятой и 0 запятых | Ключи: Артикул, Название, Цена |
| "Стул, дуб" | Одно поле, запятая внутри кавычек остаётся текстом | "Название": "Стул, дуб" |
| "Лампа ""Уют""" | Две кавычки подряд дают одну кавычку | "Название": "Лампа \"Уют\"" |
| 4 500,00 | Обычный текст, число не распознаётся | "Цена": "4 500,00" |
В строке состояния будет написано, что разобрано строк данных: 2. Если нужны числа, их придётся привести к числовому виду уже в своём коде.
Excel, точка с запятой и кодировка
В русской локали Excel разделителем списка служит точка с запятой, потому что запятая нужна для десятичной части. Поэтому цена 1 250,50 в таком файле остаётся одним значением, а если выбрать запятую, она разрежет число пополам.
Автоопределение смотрит на первую строку. Если заголовок состоит из одного слова, а разделители есть лишь в строках данных, оно выберет запятую, так что разделитель лучше указать самому.
Файл читается как UTF-8. Если Excel сохранил его в старой кодировке Windows-1251, кириллица превратится в нечитаемые символы; пересохраните файл как «CSV UTF-8».
Когда просмотрщик отказывается читать файл
Разбор строгий: при проблемах с кавычками он останавливается с ошибкой и ничего не додумывает.
- «Неожиданная кавычка в поле CSV»: кавычка стоит после других символов или после пробела, который идёт за разделителем, как в 1; "x".
- «После закрывающей кавычки допустимы только разделитель или перенос строки»: за закрытым полем в кавычках идёт текст, как в "x"y.
- «Не закрыта кавычка в поле CSV»: открывающая кавычка не нашла пару до конца текста.
- «CSV ограничен 100 000 строками» или «500 столбцами»: превышены лимиты размера.
Чтобы исправить ошибку с кавычками, заключите всё поле в кавычки и удвойте кавычки внутри него.
Заголовки, неполные и пустые строки
При включённом заголовке строка «Цена,Цена,,Цена» с данными из пяти ячеек даст ключи Цена, Цена (2), Столбец 3, Цена (3) и Столбец 5. В строке данных ячеек больше, чем в заголовке, поэтому лишняя ячейка получает название по номеру.
Метка порядка байтов в начале убирается, переносы LF и CRLF работают одинаково. Пустые строки перед первой записью пропускаются, а пустая строка после неё превращается в объект из пустых значений, так что проверьте конец файла на лишние переводы строки. Один перевод строки в самом конце безвреден.
Чего инструмент не делает
- Просмотрщик не редактирует ячейки, не сортирует, не фильтрует и не сохраняет исправленный CSV.
- Конвертер не распознаёт числа, даты и логические значения и не проверяет смысл данных.
- Чтение файла идёт в UTF-8, поэтому другие кодировки могут дать искажённые символы.
- Инструмент переводит только CSV в JSON, обратного преобразования и экспорта в форматы Excel нет.
Частые вопросы
Как преобразовать CSV в JSON?
Вставьте текст или выберите .csv-файл, укажите разделитель и нажмите «Преобразовать в JSON». На выходе получится массив объектов, по одному на строку данных, а «Копировать JSON» кладёт его в буфер обмена.
Почему CSV из Excel отображается в один столбец?
Скорее всего, выбран не тот разделитель: в русской локали Excel обычно ставит точку с запятой. Автоопределение смотрит только первую строку, поэтому выберите «Точка с запятой» или «Табуляция» вручную.
Показывает ли предпросмотр все строки и какие есть лимиты?
Нет, таблица показывает только первые 200 строк данных, а JSON включает все разобранные строки. Вход может содержать до 10 000 000 символов, 100 000 строк вместе с заголовком и около 500 столбцов.
Может ли поле в кавычках содержать запятую или перенос строки?
Да. Внутри двойных кавычек разделитель и переносы строк остаются частью поля, а две двойные кавычки подряд означают одну кавычку.
Что значит ошибка «Неожиданная кавычка в поле CSV»?
Двойная кавычка встретилась в поле, которое не началось с кавычки, например из-за пробела перед открывающей кавычкой или знака дюйма. Заключите всё поле в кавычки и удвойте кавычки внутри него либо уберите лишний символ.
Превращаются ли числа и даты в настоящие типы JSON?
Нет. Все значения в JSON остаются строками: цена 1 250,50 будет текстом 1 250,50, а пустая ячейка станет пустой строкой.
Что будет с повторяющимися и пустыми заголовками?
Пустые названия заменяются на «Столбец N» по номеру позиции, а повторы получают суффикс вроде Цена (2) или Цена (3), чтобы ключи не затирали друг друга. Пробелы по краям заголовка в JSON обрезаются.
Загружается ли мой CSV на сервер?
Нет. Скрипт инструмента читает вставленный текст и выбранный файл в браузере и не отправляет их по сети.
Похожие инструменты
Проверено: