CSV в JSON: как преобразовать? Онлайн-конвертер
- CSV-файлы не содержат информации о типах данных — все поля строки; JSON сохраняет числа и булевы значения правильно только при явном преобразовании.
- Стандартный разделитель в CSV — запятая, но в русскоязычных файлах часто используется точка с запятой из-за десятичных запятых.
- Онлайн-конвертер CSV в JSON обрабатывает файлы до 10 МБ, автоматически определяет разделитель и кодировку, и работает без загрузки на сервер (в браузере).
- При конвертации сложных CSV (с переносами строк в полях) нужно использовать библиотеки (Papa Parse для JavaScript, csv модуль Python), иначе данные сломаются.
- Обратная конвертация (JSON → CSV) теряет вложенность объектов — плоская таблица не может представить иерархию, кроме случаев массива однотипных объектов.
- Самый простой способ: онлайн-конвертер
- Конвертация с помощью Python (без потери данных)
- Конвертация на чистом JavaScript (браузер / Node.js)
- Конвертация в командной строке (jq, csvkit, Miller)
- Таблица сравнения инструментов
- Подводные камни: кодировка, разделители, экранирование
- Как отлаживать конвертацию
- Частные случаи: CSV без заголовков, нескольких таблиц, вложенных структур
- Бонус: как конвертировать Excel в JSON
Самый простой способ: онлайн-конвертер
Не хочется писать код? Просто перетащите файл в CSV в JSON на нашем сайте. Он определит разделитель (запятая, точка с запятой, табуляция), кодировку (UTF-8, windows-1251) и покажет предпросмотр. Можно выбрать, превращать ли каждый объект в массив или в объект с ключом из первого столбца. Конвертер работает полностью на клиенте — данные не отправляются на сервер, безопасно.
Конвертация с помощью Python (без потери данных)
Если нужно встроить в процесс — csv и json модули Python сделают всё чисто. Вот рабочий пример:
import csv, json
with open('input.csv', 'r', encoding='utf-8') as f:
reader = csv.DictReader(f, delimiter=';')
data = [row for row in reader]
with open('output.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)Подводные камни: CSV с кавычками (экранирование) DictReader обрабатывает правильно. Но если нужны типы — числа, даты — придётся парсить руками. Пример с преобразованием:
for row in data:
row['age'] = int(row['age'])
row['salary'] = float(row['salary'])Конвертация на чистом JavaScript (браузер / Node.js)
Для веб-приложений используйте библиотеку Papa Parse — она парсит даже большие файлы без подвисаний. Вот полный пример для браузера:
<input type="file" id="csvFile" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.4.1/papaparse.min.js"></script>
<script>
document.getElementById('csvFile').addEventListener('change', function(e) {
Papa.parse(e.target.files[0], {
header: true,
delimiter: detectDelim(e.target.files[0]), // можно автоматически
complete: function(results) {
console.log('JSON:', JSON.stringify(results.data));
}
});
});
</script>Для Node.js установите papaparse через npm. Поддерживает потоки (stream) — обрабатывайте файлы гигабайтного размера. Если файл весит больше 10 МБ, лучше не грузить в память целиком.
Конвертация в командной строке (jq, csvkit, Miller)
csvkit (Python): csvjson input.csv > output.json. Ставится pip install csvkit. Автоматически определяет типы чисел.
Miller (mlr): mlr --csv cat input.csv | mlr --j2j put -j output.json. Быстро, работа с потоками.
jq (с плагином csv2json): jq -R -s -f csv2json.jq input.csv. Для точного контроля.
Пример использования jq для CSV с разделителем табуляция:
jq -R -s 'split("\n") | map(split("\t")) | .[0] as $headers | .[1:] | map([$headers, .] | transpose | map({(.[0]): .[1]}) | add)' input.tsv > output.json- 11. Определить формат CSV
Разделитель, кодировка, наличие заголовков.
- 22. Выбрать инструмент
Онлайн, Python, JS, утилита CLI — под задачу.
- 33. Преобразовать в JSON
С учётом типов: числа, даты, булевы.
- 44. Провалидировать результат
Синтаксис JSON, соответствие исходных данных.
Таблица сравнения инструментов
| Инструмент | Поддержка типов | Размер файла | Сложность |
|---|---|---|---|
| Онлайн-конвертер | Авто (строки/числа) | до 10 MB | Нулевая |
| Python csv+json | Ручная | Без ограничений | Средняя |
| Papa Parse (JS) | Строки (ручная) | Без ограничений (поток) | Средняя |
| csvkit | Авто (даты, числа) | Без ограничений | Низкая |
| Miller | Авто | Без ограничений | Низкая |
✅ Чек-лист: конвертация без ошибок
0 из 8
Подводные камни: кодировка, разделители, экранирование
- Кодировка: Русские CSV часто в windows-1251. При конвертации в JSON обязательно перекодируйте в UTF-8, иначе получите кракозябры. Онлайн-конвертер делает это автоматически.
- Разделитель: В России принят
;(точка с запятой), потому что запятая — десятичный разделитель (например, 3,14). Но бывает и табуляция. Проверяйте, иначе JSON будет с одним ключом на всю строку. - Экранирование: Поля, содержащие запятую или кавычку, обрамляются двойными кавычками. Кавычка внутри поля удваивается (
""). Большинство парсеров это понимают, но самописные на коленке — нет. - Переносы строк в полях: Внутри кавычек допустим
\n. Не все парсеры обрабатывают. Papa Parse умеет.
Если не уверены в формате — сначала откройте CSV в текстовом редакторе (Notepad++, VS Code) и посмотрите на «сырые» данные.
Как отлаживать конвертацию
- Проверьте количество полей: В CSV каждая строка должна иметь одинаковое число колонок. Если нет — выровняйте или используйте парсер с опцией
skip_empty_lines. - Выведите первые 3 строки в формате JSON и визуально проверьте, все ли значения на месте.
- Для Python используйте модуль json с ensure_ascci=False, чтобы увидеть кириллицу.
- Проверьте типы: После конвертации typeof каждого поля — если все строки, а вы ждали числа, нужно преобразование.
- Используйте валидатор JSON (например, jsonlint.com) для проверки синтаксиса результирующего файла.
Частные случаи: CSV без заголовков, нескольких таблиц, вложенных структур
CSV без заголовков: Используйте header: false в Papa Parse или fieldnames в csvkit. В Python читайте csv.reader и затем вручную присваивайте ключи.
Один файл — несколько таблиц: По соглашению их разделяют пустой строкой. Ни один инструмент не умеет это правильно, придётся предобрабатывать.
Вложенные структуры: CSV плоский, поэтому для вложенности (например, массив заказов у клиента) нужно использовать либо несколько файлов, либо соглашение об именовании полей (order.0.id, order.0.total). После конвертации JSON придётся дорабатывать скриптом.
Для обратной задачи — из JSON в CSV — воспользуйтесь JSON в CSV. Он автоматически выберет одинаковые ключи из всех объектов.
Бонус: как конвертировать Excel в JSON
Если у вас Excel, а не CSV, сначала проще преобразовать в CSV, а затем в JSON. Или сразу используйте XLSX в JSON — он парсит .xlsx напрямую, учитывая типы данных из Excel (числа, даты, формулы). Работает в браузере без загрузки. Можно даже выбрать, какие листы конвертировать.
Обратная операция — JSON в XLSX — нужна, чтобы отдать заказчику таблицу. Для глубоких иерархий сначала «сплющите» JSON в массив плоских объектов.
🧮 Посчитайте сами — инструменты по теме
🧭 Разделы по теме
Частые вопросы
Как конвертировать CSV в JSON онлайн?
Используйте наш конвертер CSV в JSON — просто загрузите файл. Он автоматически определит разделитель и кодировку, выгрузит готовый JSON. Работает полностью в браузере, данные не уходят на сервер.
Как сохранить числовые типы при конвертации CSV в JSON?
В CSV все значения — строки. Чтобы получить числа, после парсинга преобразуйте каждое поле: например, в Python int(row['age']). Некоторые инструменты (csvkit, Miller) делают это автоматически по содержимому.
Что делать, если в CSV используется точка с запятой вместо запятой?
Укажите delimiter=';' в настройках парсера. Наш онлайн-конвертер определяет разделитель автоматически. Если ручками — в Python csv.reader(..., delimiter=';').
Как конвертировать CSV с кириллицей в JSON без кракозябр?
Убедитесь, что исходный CSV в UTF-8. Если он в windows-1251 — перекодируйте перед парсингом или используйте онлайн-конвертер, который определяет кодировку. В JSON символы должны быть в UTF-8.
Как конвертировать большой CSV (сотни МБ) в JSON?
Используйте потоковую обработку: в Python модуль csv читает построчно, в Node.js — Papa Parse с stream. Не загружайте весь файл в память. Или утилиты командной строки: csvkit, Miller.
Можно ли конвертировать несколько CSV в один JSON?
Да. Сначала преобразуйте каждый CSV в массив объектов, затем объедините массивы. Либо именуйте каждый массив по имени файла. Онлайн-конвертер может обработать один файл за раз, потом склеивайте вручную.
Как конвертировать JSON обратно в CSV?
Используйте наш конвертер JSON в CSV. Если JSON содержит массив объектов с одинаковыми ключами, он станет заголовками и строками таблицы. Вложенные объекты будут потеряны.
Чем отличается конвертер CSV в JSON от XLSX в JSON?
Конвертер XLSX в JSON читает бинарный формат Excel, сохраняет типы ячеек (числа, даты, формулы как значения), может выбрать лист. CSV — текстовый, проще, но без типов.
Источники и нормативные документы
- Papa Parse — документация
- csvkit — официальный сайт
- Miller — документация
- MDN — руководство по CSV