CSV ↔ JSON 변환기
CSV와 JSON 형식 간 양방향 변환을 지원하는 무료 온라인 도구입니다.
예제
CSV Example:
name,age,city John,30,New York Jane,25,Los Angeles Bob,35,Chicago
JSON Example:
[
{"name": "John", "age": "30", "city": "New York"},
{"name": "Jane", "age": "25", "city": "Los Angeles"},
{"name": "Bob", "age": "35", "city": "Chicago"}
]주요 기능
- 양방향 변환: CSV → JSON, JSON → CSV
- 구분자 선택: 쉼표, 세미콜론, 탭, 파이프
- 헤더 옵션: 첫 행을 헤더로 사용
- JSON 들여쓰기: 2/4 스페이스 또는 압축
- 스왑 기능: 결과를 입력으로 빠르게 전환
- 즉시 복사: 변환 결과 복사
CSV란?
CSV (Comma-Separated Values)는 쉼표로 값을 구분하는 텍스트 형식입니다.
CSV 예제
name,age,city
John,30,New York
Jane,25,Los Angeles
Bob,35,Chicago
특징
- 간단하고 가볍다
- 엑셀에서 쉽게 열림
- 스프레드시트 데이터 교환에 적합
- 중첩 구조 표현 불가
JSON이란?
JSON (JavaScript Object Notation)은 JavaScript 객체 형식의 데이터 구조입니다.
JSON 예제
[
{"name": "John", "age": "30", "city": "New York"},
{"name": "Jane", "age": "25", "city": "Los Angeles"},
{"name": "Bob", "age": "35", "city": "Chicago"}
]
특징
- 구조화된 데이터 표현
- 중첩 구조 지원
- 웹 API에서 널리 사용
- JavaScript와 자연스럽게 통합
변환 옵션
구분자 (Delimiter)
| 구분자 | 문자 | 사용 사례 |
|---|---|---|
| 쉼표 | , | 가장 일반적 (표준 CSV) |
| 세미콜론 | ; | 유럽권 (숫자에 쉼표 사용) |
| 탭 | \t | TSV 파일, 복사/붙여넣기 |
| 파이프 | ` | ` |
헤더 행
헤더 포함:
name,age,city
John,30,New York
→
[{"name": "John", "age": "30", "city": "New York"}]
헤더 없음:
John,30,New York
→
[["John", "30", "New York"]]
사용 사례
1. 엑셀 → JSON
# 엑셀에서 복사
Product,Price,Stock
Apple,1000,50
Banana,500,100
# JSON으로 변환
[
{"Product": "Apple", "Price": "1000", "Stock": "50"},
{"Product": "Banana", "Price": "500", "Stock": "100"}
]
2. API 데이터 → CSV
# API 응답
[
{"id": 1, "name": "Item A", "price": 100},
{"id": 2, "name": "Item B", "price": 200}
]
# CSV로 내보내기
id,name,price
1,Item A,100
2,Item B,200
3. 데이터베이스 백업
# SQL 결과를 CSV로 저장
user_id,username,email
1,john_doe,john@example.com
2,jane_smith,jane@example.com
# JSON으로 변환하여 NoSQL에 임포트
4. 구성 파일 변환
# config.json
{
"settings": [
{"key": "theme", "value": "dark"},
{"key": "language", "value": "ko"}
]
}
# CSV로 내보내기
key,value
theme,dark
language,ko
프로그래밍 예제
JavaScript
// CSV → JSON
const csv = `name,age,city
John,30,New York
Jane,25,Los Angeles`;
const lines = csv.split('\n');
const headers = lines[0].split(',');
const result = [];
for (let i = 1; i < lines.length; i++) {
const obj = {};
const values = lines[i].split(',');
headers.forEach((header, index) => {
obj[header] = values[index];
});
result.push(obj);
}
console.log(JSON.stringify(result, null, 2));
// JSON → CSV
const json = [
{name: 'John', age: 30, city: 'New York'},
{name: 'Jane', age: 25, city: 'Los Angeles'}
];
const headers = Object.keys(json[0]);
const csv = [
headers.join(','),
...json.map(row =>
headers.map(header => row[header]).join(',')
)
].join('\n');
console.log(csv);
Python
import csv
import json
# CSV → JSON
with open('data.csv', 'r') as f:
reader = csv.DictReader(f)
data = list(reader)
with open('data.json', 'w') as f:
json.dump(data, f, indent=2)
# JSON → CSV
with open('data.json', 'r') as f:
data = json.load(f)
with open('data.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)
주의사항
CSV의 제한사항
- 중첩 구조: CSV는 평면 데이터만 표현 가능
- 데이터 타입: 모든 값이 문자열로 취급됨
- 특수문자: 쉼표나 줄바꿈 포함 시 따옴표 필요
JSON의 제한사항
- 파일 크기: CSV보다 용량이 큼
- 사람이 읽기: 복잡한 구조는 가독성 낮음
- 엑셀 호환: 직접 열 수 없음 (변환 필요)
CSV 형식 주의사항
따옴표 처리
# 값에 쉼표가 있으면 따옴표로 감싸기
name,description
"Smith, John","Software Developer"
"Doe, Jane","Data Analyst, Manager"
이스케이프
# 따옴표 안의 따옴표는 두 번
name,quote
John,"He said ""Hello"""
자주 묻는 질문
Q: CSV에서 빈 값은 어떻게 처리되나요?
A: JSON에서 빈 문자열("")로 변환됩니다.