본문으로 건너뛰기

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)
세미콜론;유럽권 (숫자에 쉼표 사용)
\tTSV 파일, 복사/붙여넣기
파이프``

헤더 행

헤더 포함:

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의 제한사항

  1. 중첩 구조: CSV는 평면 데이터만 표현 가능
  2. 데이터 타입: 모든 값이 문자열로 취급됨
  3. 특수문자: 쉼표나 줄바꿈 포함 시 따옴표 필요

JSON의 제한사항

  1. 파일 크기: CSV보다 용량이 큼
  2. 사람이 읽기: 복잡한 구조는 가독성 낮음
  3. 엑셀 호환: 직접 열 수 없음 (변환 필요)

CSV 형식 주의사항

따옴표 처리

# 값에 쉼표가 있으면 따옴표로 감싸기
name,description
"Smith, John","Software Developer"
"Doe, Jane","Data Analyst, Manager"

이스케이프

# 따옴표 안의 따옴표는 두 번
name,quote
John,"He said ""Hello"""

자주 묻는 질문

Q: CSV에서 빈 값은 어떻게 처리되나요?

A: JSON에서 빈 문자열("")로 변환됩니다.

Q: JSON의 중첩 객체는 어떻게 되나요?

A: 이 도구는 평면 구조만 지원합니다. 중첩 객체는 문자열로 변환될 수 있습니다.

Q: 대용량 파일도 처리할 수 있나요?

A: 브라우저 메모리에 따라 다릅니다. 매우 큰 파일은 서버 측 도구를 사용하세요.

Q: 엑셀 파일을 직접 변환할 수 있나요?

A: 아니요. 먼저 엑셀에서 CSV로 저장한 후 사용하세요.

관련 도구