CSV to JSON

Конвертация CSV в массив или объект JSON

Работает локально · Безопасно вставлять секреты
CSV появится здесь…

Что такое конвертация CSV в JSON?

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.csvMost common; Excel default export
Tab (\t)TSV variant.tsvAvoids quoting fields that contain commas
Semicolon (;)European locale CSV.csvUsed where comma is the decimal separator (DE, FR, BR)
Pipe (|)Fixed-width alternative.csvRare in field values, good for messy data

CSV и JSON: структурные различия

Различие между двумя форматами объясняет, почему при конвертации необходимо явно принимать решения о сопоставлении заголовков, определении типов и обработке отсутствующих значений.

CSV
Плоский формат, ориентированный на строки. Каждая запись имеет одинаковое количество полей. Все значения являются строками, если только потребитель не определяет типы самостоятельно. Нет поддержки вложенности и записей переменной длины. Строка заголовков необязательна по RFC 4180, но обязательна для осмысленной конвертации в JSON.
JSON
Формат с древовидной структурой и самоописанием. Каждый объект может иметь разные ключи. Значения типизированы: строка, число, булево, null, объект или массив. Поддерживает произвольную глубину вложенности. Порядок свойств не гарантируется спецификацией JSON (ECMA-404), хотя большинство парсеров сохраняет порядок вставки.

Примеры кода

Как программно конвертировать CSV в JSON на популярных языках и с помощью CLI-инструментов:

JavaScript (browser / Node.js)
// Simple CSV string → JSON array
const csv = `name,age,city
Alice,30,Berlin
Bob,25,Tokyo`

const [headerLine, ...rows] = csv.trim().split('\n')
const headers = headerLine.split(',')
const json = rows.map(row => {
  const values = row.split(',')
  return Object.fromEntries(headers.map((h, i) => [h, values[i]]))
})
// → [{ name: "Alice", age: "30", city: "Berlin" }, ...]

// With the built-in fetch + a library (Papa Parse)
import Papa from 'papaparse'
const result = Papa.parse(csvString, { header: true, dynamicTyping: true })
console.log(result.data) // typed numbers and booleans
Python
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, баз данных и привязки данных во фронтенде.