CSV (Comma-Separated Values) — это текстовый табличный формат, в котором каждая строка представляет запись, а поля внутри записи разделены символом-разделителем, как правило запятой. CSV является стандартным форматом обмена данными с первых дней персональных компьютеров и формализован в RFC 4180. Электронные таблицы, базы данных и инструменты экспорта данных работают с CSV, поскольку этот формат прост, компактен и поддерживается практически любым языком программирования.
JSON (JavaScript Object Notation) представляет структурированные данные в виде пар ключ-значение и упорядоченных массивов. В отличие от CSV, JSON поддерживает вложенные объекты, типизированные значения (числа, булевы, null) и записи переменной длины. Поскольку JSON нативно понимается движками JavaScript, он является доминирующим форматом для обмена данными между браузером и сервером и для ответов REST API. Эти свойства делают JSON форматом по умолчанию для веб-API, конфигурационных файлов и NoSQL-баз данных, таких как MongoDB и CouchDB.
Конвертация CSV в JSON означает преобразование каждой строки таблицы в JSON-объект: строка заголовков становится именами свойств, а значения ячеек — значениями свойств. Результатом обычно является JSON-массив объектов. Такое преобразование необходимо, когда нужно передать плоские табличные данные в систему, ожидающую структурированный JSON: REST API, компонент таблицы данных во фронтенде или документоориентированную базу данных.
Зачем использовать этот инструмент?
Этот конвертер разбирает CSV в браузере, мгновенно формирует JSON-вывод и никогда не отправляет ваши данные на сервер.
⚡
Мгновенная конвертация
Вставьте CSV и сразу получите JSON. Никаких обращений к серверу и загрузки файлов. Конвертация происходит по мере ввода.
🔒
Обработка с приоритетом конфиденциальности
Данные остаются во вкладке браузера. Ничего не передаётся по сети. Безопасно для внутренних наборов данных, учётных данных и персональных данных, которые не должны покидать вашу машину.
🔀
Автоопределение разделителя
Инструмент распознаёт запятую, табуляцию, точку с запятой и вертикальную черту. Также можно задать разделитель вручную, если файл использует нестандартный символ.
📋
Копирование или скачивание
Скопируйте результат JSON в буфер обмена одним нажатием или скачайте как .json-файл. Готово к непосредственному использованию в коде, клиенте API или при импорте в базу данных.
Сценарии использования CSV to JSON
Фронтенд-разработка
Конвертируйте CSV-экспорт из дизайн-инструмента или электронной таблицы в JSON для использования в качестве тестовых данных для компонентов React, Vue или Angular при прототипировании.
Заполнение данными серверного API
Преобразуйте CSV-дампы баз данных в JSON-пейлоады для заполнения REST или GraphQL API. Многие ORM и инструменты миграции принимают JSON-фикстуры для начальной загрузки данных.
Конфигурация DevOps
Конвертируйте CSV-списки инвентаря или матрицы окружений в JSON для использования в плейбуках Ansible, файлах переменных Terraform или конфигурациях CI/CD-пайплайнов.
Подготовка тестовых данных для QA
Превращайте матрицы тестов из электронных таблиц в JSON-массивы для фреймворков Jest, pytest или Playwright — для тестирования с данными.
Пайплайны обработки данных
Конвертируйте CSV-вывод SQL-запросов или ETL-экспортов в JSON для загрузки в документоориентированные хранилища: MongoDB, Elasticsearch или режим JSON-импорта BigQuery.
Учебные проекты
Быстро конвертируйте CSV-датасеты (Kaggle, порталы открытых данных) в JSON для использования в учебных проектах по веб-разработке, руководствах или личных проектах.
Справочник разделителей CSV
CSV-файлы не всегда используют запятые. Разделитель зависит от локали, приложения-экспортёра и содержимого данных. Ниже приведены четыре наиболее распространённых разделителя и типичные случаи их применения:
Разделитель
Стандарт
Расширение
Примечания
Comma (,)
RFC 4180 default
.csv
Most common; Excel default export
Tab (\t)
TSV variant
.tsv
Avoids quoting fields that contain commas
Semicolon (;)
European locale CSV
.csv
Used where comma is the decimal separator (DE, FR, BR)
Pipe (|)
Fixed-width alternative
.csv
Rare in field values, good for messy data
CSV и JSON: структурные различия
Различие между двумя форматами объясняет, почему при конвертации необходимо явно принимать решения о сопоставлении заголовков, определении типов и обработке отсутствующих значений.
CSV
Плоский формат, ориентированный на строки. Каждая запись имеет одинаковое количество полей. Все значения являются строками, если только потребитель не определяет типы самостоятельно. Нет поддержки вложенности и записей переменной длины. Строка заголовков необязательна по RFC 4180, но обязательна для осмысленной конвертации в JSON.
JSON
Формат с древовидной структурой и самоописанием. Каждый объект может иметь разные ключи. Значения типизированы: строка, число, булево, null, объект или массив. Поддерживает произвольную глубину вложенности. Порядок свойств не гарантируется спецификацией JSON (ECMA-404), хотя большинство парсеров сохраняет порядок вставки.
Примеры кода
Как программно конвертировать CSV в JSON на популярных языках и с помощью CLI-инструментов:
import csv, json, io
csv_string = """name,age,city
Alice,30,Berlin
Bob,25,Tokyo"""
reader = csv.DictReader(io.StringIO(csv_string))
data = [row for row in reader]
print(json.dumps(data, indent=2))
# → [{"name": "Alice", "age": "30", "city": "Berlin"}, ...]
# With type coercion (age as int)
import pandas as pd
df = pd.read_csv(io.StringIO(csv_string))
print(df.to_json(orient="records", indent=2))
# → [{"name": "Alice", "age": 30, "city": "Berlin"}, ...]
Go
package main
import (
"encoding/csv"
"encoding/json"
"fmt"
"strings"
)
func main() {
input := "name,age,city\nAlice,30,Berlin\nBob,25,Tokyo"
r := csv.NewReader(strings.NewReader(input))
records, _ := r.ReadAll()
headers := records[0]
var result []map[string]string
for _, row := range records[1:] {
obj := make(map[string]string)
for i, h := range headers {
obj[h] = row[i]
}
result = append(result, obj)
}
out, _ := json.MarshalIndent(result, "", " ")
fmt.Println(string(out))
// → [{"age":"30","city":"Berlin","name":"Alice"}, ...]
}
CLI (jq + Miller)
# Using Miller (mlr) — handles quoting, types, and edge cases
mlr --icsv --ojson cat data.csv
# → [{"name": "Alice", "age": 30, "city": "Berlin"}, ...]
# Using csvjson from csvkit (Python-based)
csvjson data.csv
# Using jq with @csv (reverse: JSON → CSV)
# For CSV → JSON, pipe through Miller or Python
cat data.csv | python3 -c "
import csv, json, sys
reader = csv.DictReader(sys.stdin)
json.dump(list(reader), sys.stdout, indent=2)
"
Часто задаваемые вопросы
Как конвертер обрабатывает CSV-файлы без строки заголовков?
Если в CSV нет строки заголовков, конвертер использует автоматически сгенерированные ключи: "field1", "field2" и т. д. Для лучшего результата добавьте строку заголовков перед конвертацией или переименуйте ключи в полученном JSON.
Что происходит с полями в кавычках, содержащими запятые или переносы строк?
Парсер следует правилам экранирования RFC 4180. Поля, заключённые в двойные кавычки, могут содержать запятые, переносы строк и даже двойные кавычки (экранированные как ""). Конвертер убирает внешние кавычки и сохраняет внутреннее содержимое как единственное строковое значение JSON.
Сохраняются ли типы данных — числа и булевы значения?
CSV — формат без типизации; все значения ячеек являются строками. Этот конвертер по умолчанию выводит строковые значения во избежание потери данных. Если нужен типизированный вывод, разберите результат JSON в своём приложении и явно приведите поля к нужным типам. Библиотеки Papa Parse (JavaScript) и pandas (Python) предлагают параметры динамической типизации при разборе.
Можно ли конвертировать CSV с точкой с запятой или табуляцией вместо запятой?
Да. Инструмент поддерживает запятую, табуляцию, точку с запятой и вертикальную черту. Выберите нужный разделитель в выпадающем списке или дайте автоопределению определить его самостоятельно. Точки с запятой распространены в CSV-экспортах Excel с европейскими региональными настройками, где запятая используется как разделитель дробной части.
Есть ли ограничение на размер CSV-файла?
Поскольку обработка выполняется полностью в браузере, практическое ограничение зависит от доступной памяти устройства. Файлы размером до 10–20 МБ обычно конвертируются без проблем на современном оборудовании. Для очень больших файлов (сотни МБ) используйте потоковый парсер — например, Papa Parse в Node.js или модуль csv Python, — которые обрабатывают данные построчно, не загружая всё в память.
Как обрабатываются строки CSV с разным количеством столбцов?
Нерегулярные CSV (строки с меньшим или большим количеством полей, чем в заголовке) часто встречаются в реальных экспортах. Этот конвертер заполняет отсутствующие поля пустыми строками и игнорирует лишние поля сверх количества заголовков. Если данные стабильно нерегулярны, проверьте исходный файл на наличие неэкранированных разделителей или пропущенных кавычек.
В чём разница между выводом в виде JSON-массива и JSON-объекта?
JSON-массив объектов — это стандартный вывод: каждая строка CSV становится одним объектом в массиве, а имена заголовков используются в качестве ключей. Некоторые инструменты также предлагают "столбцово-ориентированный" вывод, где каждый заголовок становится ключом с массивом всех значений этого столбца. Формат массива объектов более распространён для API, баз данных и привязки данных во фронтенде.