Направление конвертации
Конвертация CSV в JSON
Преобразование CSV → JSON на сервере, без установки программ
- Загрузить
- Выбрать формат
- Скачать
Загрузка файлов
Область приёма файла
или
Файлы CSV. До 5 МБ, до 20 файлов за раз. Изображение можно вставить из буфера обмена: Ctrl+V.
Исходники и результаты хранятся 60 минут, затем стираются фоновым уборщиком. Предельный размер файла — 5 МБ, срок хранения — час.
CSV и JSON: характеристики
| Характеристика | .csvCSV | .jsonJSON |
|---|---|---|
| Полное название | Comma-Separated Values | JavaScript Object Notation |
| Расширение | .csv | .json |
| MIME-типы | text/csv, application/csv, text/comma-separated-values | application/json, text/json, application/x-json |
| Содержимое | Текстовое | Текстовое |
| Несколько страниц в файле | Нет | Нет |
| Разделитель | Запятая, точка с запятой или табуляция | нет данных |
| Экранирование | Двойные кавычки, кавычка внутри удваивается | нет данных |
| Листы | Ровно один на файл | нет данных |
| Формулы и оформление | Не поддерживаются | нет данных |
| Стандарт | RFC 4180 | RFC 8259 / ECMA-404 |
| Чем открыть | Microsoft Excel, LibreOffice Calc, Google Таблицы, Notepad++, VS Code, Блокнот | VS Code, Notepad++, Sublime Text, JetBrains IDE, Google Chrome, jq |
| Спецификация | Описание формата | Описание формата |
| Разработчик | нет данных | Дуглас Крокфорд |
| Год появления | нет данных | 2001 |
| Типы данных | нет данных | Строка, число, логическое, null, массив, объект |
| Кодировка | нет данных | UTF-8 |
| Комментарии | нет данных | Не поддерживаются |
| Схема | нет данных | Опционально, через JSON Schema |
Преобразование CSV → JSON
У CSV нет единой обязательной спецификации: RFC 4180 фиксирует распространённую практику, а не стандарт, и файлы расходятся в разделителе, переводе строки и способе экранирования. Разбор поэтому опирается на два явно заданных условия: строка заголовка присутствует, разделитель указан вами. Каждая последующая строка становится объектом внутри массива.
Читает файл конечный автомат, а не разбиение текста по символу: внутри поля, заключённого в двойные кавычки, и разделитель, и перевод строки считаются обычными символами, а удвоенная кавычка внутри такого поля читается как один символ. Благодаря этому многострочный адрес или примечание с запятой не разрушают таблицу. Метка порядка байтов в начале файла отбрасывается — иначе она вошла бы в имя первого поля, и обращение к нему из кода перестало бы работать.
Распознавание типов ограничено намеренно. Целевая модель различает число, строку и логическое значение, исходная — нет, поэтому решение принимается по форме записи: последовательность цифр без значащего нуля впереди даёт число, литералы true и false — логическое значение, всё прочее сохраняется текстом. Отдельно защищены коды и индексы: запись 007 числом потеряла бы старший разряд, поэтому она остаётся строкой. Поле без содержимого превращается в строку нулевой длины, а не пропадает: одинаковый набор ключей у всех объектов важнее экономии на пустых значениях.
Имена полей копируются из первой строки дословно — с регистром, пробелами и кириллицей; повторяющийся заголовок создаёт конфликт ключей, и до значения второго такого столбца добраться будет нельзя. Кодировка ожидается UTF-8: однобайтовый файл из старого табличного редактора даст на выходе посторонние символы, и лечится это пересохранением источника, а не параметрами конвертации. Отступ результата — два пробела, что прибавляет к объёму четверть-треть и отключается параметром. На обработку отводится 120 секунд.
Порядок преобразования CSV → JSON
Шаг 1
Ревизия строки заголовка
Первая строка целиком превращается в набор ключей, поэтому в ней не должно быть повторов и посторонних подписей. При её отсутствии ключами станут данные.
Шаг 2
Приведение к UTF-8
Перекодировка на сервере не выполняется: файл читается как UTF-8. Выгрузку из старого табличного редактора пересохраните в этой кодировке до загрузки.
Шаг 3
Разделитель и форматирование
Укажите символ, которым поля разделены фактически, и решите, нужны ли отступы: с ними документ читается глазами, без них он компактнее на четверть-треть.
Шаг 4
Контроль типов
Откройте результат и посмотрите на числовые поля, коды и даты — приведение типов заметно именно на них.
Вопросы по работе сервиса
Вся строка попала в одно поле.
Указан не тот разделитель. Автомат разбора следует заданному символу буквально: если в файле стоит точка с запятой, а выбрана запятая, признака конца поля в строке не находится ни разу. Повторите преобразование с фактическим разделителем.
Почему код 007 не стал числом?
Значащий нуль впереди — признак кода, а не количества. Числом такая запись стала бы семёркой, и восстановить разряды из результата было бы нечем. Правило распространяется на артикулы, почтовые индексы, номера документов и любые записи, начинающиеся с нуля.
Как обрабатывается перенос строки внутри поля?
Он сохраняется, если поле заключено в двойные кавычки: внутри них перевод строки не считается концом записи. Такое значение попадёт в результат целиком, вместе с символом переноса. Поле без кавычек с переносом внутри разорвёт таблицу — это дефект исходного файла.
Что произойдёт с повторяющимися именами столбцов?
Ключи внутри объекта уникальны, поэтому одинаковые заголовки конфликтуют, и до значения второго такого столбца добраться будет нельзя. Переименуйте дубликаты в первой строке до загрузки: другого способа сохранить оба поля нет.
Нужно ли отключать отступы?
Отключайте, если документ уходит по сети или в хранилище: форматирование прибавляет к объёму четверть-треть и на разбор принимающей стороной не влияет. Оставляйте, если результат предстоит читать и сверять глазами.