개발초급📖 10분 읽기📅 2026-02-18

JSON-CSV 변환 완벽 가이드

JSON 배열을 엑셀 호환 CSV로, CSV를 JSON으로 변환하는 실무 노하우와 데이터 처리 팁

#JSON#CSV#데이터 변환#엑셀#개발

JSON-CSV 변환 완벽 가이드

데이터 작업을 하다 보면 JSON과 CSV 형식 간의 변환이 필요한 순간이 자주 찾아옵니다. API에서 받아온 JSON 데이터를 엑셀로 분석하고 싶거나, 기획자가 정리한 CSV 파일을 개발에 활용해야 할 때가 대표적입니다. 이 가이드에서는 두 형식의 특성을 이해하고, 실무에서 바로 적용할 수 있는 변환 기법을 알아봅니다.

1. JSON과 CSV의 차이점

두 형식의 차이점을 이해하면 어떤 상황에서 어느 형식이 적합한지 판단할 수 있습니다.

JSON (JavaScript Object Notation)

JSON은 계층적(nested) 데이터 구조를 표현할 수 있는 범용 데이터 형식입니다.

[
  {
    "id": 1,
    "name": "홍길동",
    "department": {
      "id": 10,
      "name": "개발팀"
    },
    "skills": ["JavaScript", "Python"],
    "active": true
  }
]

JSON의 특징:

  • 중첩 구조(객체 안의 객체, 배열 안의 배열) 지원
  • 문자열, 숫자, 불리언, null, 배열, 객체 등 다양한 타입
  • API 통신의 표준 형식
  • 사람이 읽기 쉬운 구조

CSV (Comma-Separated Values)

CSV는 데이터를 행(row)과 열(column)로 표현하는 평면적(flat) 형식입니다.

id,name,department,active
1,홍길동,개발팀,true
2,김철수,기획팀,false
3,이영희,디자인팀,true

CSV의 특징:

  • 2차원 표(테이블) 구조만 표현 가능
  • 엑셀, Google Sheets와 완벽 호환
  • 어떤 프로그래밍 언어에서도 쉽게 파싱 가능
  • 데이터베이스 임포트/엑스포트의 표준 형식

언제 어떤 형식을 쓸까?

상황권장 형식
API 개발 및 통신JSON
엑셀 분석 및 보고서CSV
NoSQL 데이터베이스JSON
관계형 DB 임포트CSV
복잡한 중첩 데이터JSON
단순한 표 형태 데이터CSV

2. JSON → CSV 변환 실무 가이드

JSON을 CSV로 변환할 때는 몇 가지 중요한 규칙이 있습니다.

변환 가능한 JSON 구조

올바른 형태: 객체의 배열(Array of Objects)

[
  {"name": "홍길동", "age": 30, "city": "서울"},
  {"name": "김철수", "age": 25, "city": "부산"},
  {"name": "이영희", "age": 28, "city": "인천"}
]

위 JSON은 아래 CSV로 변환됩니다:

name,age,city
홍길동,30,서울
김철수,25,부산
이영희,28,인천

변환 시 주의사항

1. 중첩 구조 평탄화(Flatten)

중첩된 JSON은 직접 CSV로 변환할 수 없습니다. 먼저 평탄화가 필요합니다.

// 변환 불가: 중첩 구조
[{"user": {"name": "홍길동", "age": 30}, "city": "서울"}]

// 평탄화 후 변환 가능
[{"user_name": "홍길동", "user_age": 30, "city": "서울"}]

2. 배열 필드 처리

// skills가 배열 → CSV로 표현 어려움
[{"name": "홍길동", "skills": ["JS", "Python"]}]

// 해결책: 문자열로 합치거나 별도 컬럼으로 분리
[{"name": "홍길동", "skills": "JS,Python"}]

3. 특수문자가 포함된 값

쉼표, 큰따옴표, 줄바꿈이 포함된 값은 자동으로 따옴표 처리됩니다:

name,address
홍길동,"서울시 강남구, 테헤란로 123"

단계별 변환 과정

  1. JSON 배열 전체를 입력 (배열의 첫 번째 객체 키들이 헤더가 됨)
  2. 구분자 선택 (기본: 쉼표)
  3. 헤더 포함 여부 설정
  4. 변환 버튼 클릭
  5. CSV 복사 또는 파일 다운로드

3. CSV → JSON 변환 실무 가이드

엑셀이나 스프레드시트 데이터를 API나 개발에 활용할 때 CSV를 JSON으로 변환합니다.

기본 변환 예시

입력 CSV:

name,age,department,salary
홍길동,30,개발팀,5000000
김철수,25,기획팀,4500000
이영희,28,디자인팀,4800000

변환 결과 JSON:

[
  {"name": "홍길동", "age": "30", "department": "개발팀", "salary": "5000000"},
  {"name": "김철수", "age": "25", "department": "기획팀", "salary": "4500000"},
  {"name": "이영희", "age": "28", "department": "디자인팀", "salary": "4800000"}
]

타입 변환 주의사항

CSV에서 JSON으로 변환할 때 모든 값은 기본적으로 문자열(string) 로 변환됩니다.

숫자나 불리언 타입이 필요하다면 애플리케이션에서 추가 처리가 필요합니다:

// JavaScript에서 타입 변환
const data = csvData.map(row => ({
  ...row,
  age: Number(row.age),
  salary: Number(row.salary),
  active: row.active === 'true'
}))

헤더 설정

  • 첫 행을 헤더로 사용: 일반적인 CSV 형태. 첫 번째 행이 키 이름이 됨
  • 헤더 없음: 모든 행이 데이터로 처리되며, field_1, field_2 등 자동 키 부여

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

4. 구분자 선택 전략

CSV의 "C"는 Comma(쉼표)이지만, 실제로는 다양한 구분자를 사용할 수 있습니다.

구분자별 특징

쉼표 (,) - 기본값

name,city,salary
홍길동,서울,5000000
  • 가장 보편적인 구분자
  • 데이터에 쉼표가 포함되면 자동으로 따옴표 처리
  • 영어권 엑셀의 기본 구분자

탭 (\t) - TSV 형식

name	city	salary
홍길동	서울	5000000
  • 데이터에 쉼표가 많을 때 권장
  • 주소, 설명문 등 쉼표가 자주 등장하는 데이터에 적합
  • Tab-Separated Values(TSV)라고도 불림

세미콜론 (;)

name;city;salary
홍길동;서울;5000000
  • 유럽 지역 엑셀의 기본 구분자 (숫자에서 쉼표를 소수점으로 사용하는 문화권)
  • 유럽 사용자와 파일을 공유할 때 유용

구분자 선택 기준

  1. 데이터에 쉼표가 없으면 → 쉼표(,) 사용
  2. 주소, 설명 등 쉼표가 많은 데이터 → 탭(\t) 사용
  3. 유럽 팀과 공유 → 세미콜론(;) 사용
  4. 불확실하면 → 쉼표(,) 기본값 (자동 따옴표 처리 지원)

5. 엑셀 호환성과 한글 인코딩

한국어가 포함된 CSV 파일을 엑셀에서 올바르게 열기 위해서는 인코딩 설정이 중요합니다.

한글 깨짐 문제 해결

문제: CSV 파일을 더블클릭해서 엑셀로 열면 한글이 깨져 보임

원인: 엑셀이 기본적으로 CP949(EUC-KR) 인코딩을 사용하는 반면, 이 도구는 UTF-8로 저장함

해결 방법 1: 엑셀 데이터 가져오기

  1. 엑셀 메뉴에서 데이터 탭 클릭
  2. 텍스트/CSV 가져오기 선택
  3. 다운로드한 CSV 파일 선택
  4. 인코딩: 65001: Unicode (UTF-8) 선택
  5. 구분자 확인 후 로드 클릭

해결 방법 2: Google Sheets 사용

Google Sheets는 UTF-8을 자동 감지합니다:

  1. Google Sheets 열기
  2. 파일가져오기
  3. CSV 파일 업로드
  4. 자동으로 한글 정상 표시

해결 방법 3: BOM 추가 (고급)

일부 엑셀 버전은 UTF-8 BOM(Byte Order Mark)이 있으면 자동 인식합니다. 개발자라면 저장 시 BOM을 추가하는 방법을 고려할 수 있습니다.

숫자 형식 주의사항

CSV의 숫자 데이터가 엑셀에서 날짜나 다른 형식으로 표시될 수 있습니다:

  • 01-02 → 1월 2일로 해석
  • 1/2 → 1월 2일로 해석
  • 0001 → 1로 해석 (앞의 0 제거)

이런 경우 해당 열을 텍스트 형식으로 가져오거나, 값 앞에 작은따옴표를 붙이는 방법('0001)을 사용합니다.

6. 실무 활용 시나리오

시나리오 1: 기획자 ↔ 개발자 데이터 교환

상황: 기획자가 엑셀로 관리하는 상품 데이터를 개발자에게 전달

// 기획자 엑셀 (상품 목록)
상품코드,상품명,가격,재고수량,카테고리
P001,무선 이어폰,89000,150,전자기기
P002,노트북 거치대,35000,80,사무용품
  1. 기획자: 엑셀 → CSV 저장
  2. 뚝딱툴: CSV → JSON 변환
  3. 개발자: JSON을 API나 DB에 바로 활용
[
  {"상품코드": "P001", "상품명": "무선 이어폰", "가격": "89000", "재고수량": "150", "카테고리": "전자기기"},
  {"상품코드": "P002", "상품명": "노트북 거치대", "가격": "35000", "재고수량": "80", "카테고리": "사무용품"}
]

시나리오 2: API 응답 데이터 엑셀 분석

상황: 서버 API에서 받아온 사용자 데이터를 엑셀로 분석

  1. API 응답 JSON 복사
  2. 뚝딱툴: JSON → CSV 변환
  3. 다운로드한 CSV를 엑셀에서 피벗 테이블, 차트 등으로 분석

모든 처리가 브라우저에서 이루어지므로 고객 정보, 매출 데이터 등 민감한 데이터도 서버 전송 없이 안전하게 처리됩니다.

시나리오 3: 데이터베이스 마이그레이션

상황: 레거시 시스템의 CSV 데이터를 MongoDB에 이전

# 1. CSV → JSON 변환 후 파일 다운로드
# 2. mongoimport 명령으로 MongoDB에 삽입
mongoimport --db mydb --collection users --file users.json --jsonArray

시나리오 4: 테스트 데이터 생성

상황: QA 팀이 엑셀로 작성한 테스트 케이스를 자동화 테스트에 활용

// 테스트 케이스 CSV
테스트ID,입력값,기대결과,우선순위
TC001,valid@email.com,성공,높음
TC002,invalid-email,실패,높음
TC003,,실패,중간

CSV → JSON 변환 후 Postman, Jest 등의 테스트 도구에서 데이터 파일로 직접 사용합니다.


JSON-CSV 변환은 개발자와 비개발자 모두가 자주 직면하는 작업입니다. 형식의 특성을 이해하고 적절한 도구를 활용하면 데이터 작업의 효율성을 크게 높일 수 있습니다.

뚝딱툴 JSON-CSV 변환 도구를 활용하여 브라우저에서 안전하게, 별도 설치 없이 변환해보세요.

JSON-CSV 변환 완벽 가이드 | 뚝딱툴