CSV to JSON 변환기

CSV 데이터를 JSON 배열 또는 객체 형식으로 변환

로컬에서 실행 · 시크릿 붙여넣기 안전
CSV가 여기에 표시됩니다…

CSV to JSON 변환이란?

CSV(Comma-Separated Values)는 각 줄이 하나의 데이터 레코드이고, 레코드 내 필드가 구분자(일반적으로 쉼표)로 구분되는 일반 텍스트 표 형식입니다. CSV는 개인용 컴퓨터 초기부터 표준 교환 형식으로 사용되어 왔으며, RFC 4180으로 공식 정의되었습니다. 스프레드시트, 데이터베이스, 데이터 내보내기 도구 모두 CSV를 생성하는데, 이는 단순하고 간결하며 거의 모든 프로그래밍 언어에서 읽을 수 있기 때문입니다.

JSON(JavaScript Object Notation)은 키-값 쌍과 순서가 있는 배열로 구조화된 데이터를 표현합니다. CSV와 달리 JSON은 중첩 객체, 타입이 있는 값(숫자, 불리언, null), 가변 길이 레코드를 지원합니다. JSON은 JavaScript 엔진에서 기본적으로 이해되기 때문에 브라우저-서버 간 데이터 교환과 REST API 응답의 주요 형식입니다. 이러한 특성으로 인해 JSON은 웹 API, 설정 파일, MongoDB와 CouchDB 같은 NoSQL 데이터베이스의 기본 형식이 되었습니다.

CSV를 JSON으로 변환한다는 것은 테이블의 각 행을 JSON 객체로 매핑하고, 헤더 행을 속성 이름으로, 셀 값을 속성 값으로 사용하는 것을 의미합니다. 결과는 일반적으로 JSON 객체 배열입니다. 이 변환은 REST API, 프론트엔드 데이터 테이블 컴포넌트, 문서 지향 데이터베이스 등 구조화된 JSON 입력을 기대하는 시스템에 평탄한 표 형식 데이터를 제공해야 할 때 필요합니다.

이 도구를 사용하는 이유

이 변환기는 브라우저에서 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 같은 테스트 프레임워크에서 사용합니다.
데이터 엔지니어링 파이프라인
SQL 쿼리나 ETL 내보내기의 CSV 출력을 JSON으로 변환하여 MongoDB, Elasticsearch, BigQuery의 JSON 수집 모드 같은 문서 저장소에 로드합니다.
학생 프로젝트와 학습
샘플 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 vs JSON: 구조적 차이

두 형식 간의 차이가 변환 시 헤더 매핑, 타입 추론, 누락 값 처리에 명시적인 결정이 필요한 이유입니다.

CSV
평탄한 행 지향 형식. 모든 레코드는 동일한 수의 필드를 가집니다. 소비자가 타입을 추론하지 않는 한 모든 값은 문자열입니다. 중첩이나 가변 길이 레코드를 지원하지 않습니다. 헤더 행은 RFC 4180에서 선택 사항이지만, 의미 있는 JSON 변환을 위해 필수입니다.
JSON
트리 구조의 자기 설명 형식. 각 객체는 다른 키를 가질 수 있습니다. 값에 타입이 있습니다: 문자열, 숫자, 불리언, null, 객체, 배열. 임의의 중첩 깊이를 지원합니다. 속성 순서는 JSON 명세(ECMA-404)에서 보장되지 않지만, 대부분의 파서는 삽입 순서를 유지합니다.

코드 예제

주요 언어와 CLI 도구에서 CSV를 JSON으로 프로그래밍 방식으로 변환하는 방법:

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도 변환할 수 있나요?
네. 이 도구는 쉼표, 탭, 세미콜론, 파이프 구분자를 지원합니다. 드롭다운에서 올바른 구분자를 선택하거나 자동 감지를 사용하세요. 세미콜론은 쉼표가 소수점 구분자로 사용되는 유럽 로케일의 Excel CSV 내보내기에서 일반적입니다.
CSV 입력의 파일 크기 제한이 있나요?
처리가 전적으로 브라우저에서 실행되므로 실질적인 한계는 기기의 사용 가능한 메모리에 따라 다릅니다. 최신 하드웨어에서 10~20MB 파일은 일반적으로 문제없이 변환됩니다. 매우 큰 파일(수백 MB)에는 Node.js의 Papa Parse 또는 Python의 csv 모듈 같은 스트리밍 파서를 사용하세요. 이 도구들은 모든 것을 메모리에 로드하지 않고 행 단위로 데이터를 처리합니다.
열 수가 다른 CSV 행은 어떻게 처리하나요?
들쭉날쭉한 CSV(헤더보다 필드가 적거나 많은 행)는 실제 내보내기에서 자주 발생합니다. 이 변환기는 누락된 필드를 빈 문자열로 채우고 헤더 수를 초과하는 추가 필드는 무시합니다. 데이터가 일관되게 불규칙하다면 이스케이프되지 않은 구분자나 누락된 따옴표가 있는지 원본 파일을 확인하세요.
JSON 배열 출력과 JSON 객체 출력의 차이는 무엇인가요?
JSON 객체 배열이 표준 출력입니다. 각 CSV 행은 배열의 하나의 객체가 되고, 헤더 이름이 키가 됩니다. 일부 도구는 각 헤더가 해당 열의 모든 값을 담은 배열을 값으로 갖는 "열 지향" 출력도 제공합니다. 객체 배열 형식은 API, 데이터베이스, 프론트엔드 데이터 바인딩에 더 일반적입니다.