Skip to main content
KO
guide

CSV vs JSON Complete Comparison — Data Format Differences and Conversion

2026-04-07 · 7 min read

데이터를 주고받는 두 가지 언어 — CSV와 JSON

데이터를 다루는 일은 현대 업무에서 피할 수 없습니다. 마케팅 담당자는 광고 성과 데이터를 엑셀로 정리하고, 개발자는 API를 통해 서버 간 데이터를 주고받으며, 데이터 분석가는 수만 건의 데이터를 파이썬으로 처리합니다.

이런 상황에서 가장 자주 만나는 두 가지 데이터 형식이 바로 CSVJSON입니다. 둘 다 텍스트 기반이고, 사람이 읽을 수 있으며, 거의 모든 프로그래밍 언어와 도구에서 지원합니다. 하지만 구조와 용도가 다르기 때문에, 각각의 특징을 이해하고 상황에 맞게 선택하는 것이 중요합니다.

이 글에서는 CSV와 JSON의 차이점을 구조적으로 비교하고, 실무에서의 활용 사례, 변환 시 주의사항, 그리고 프로그래밍 언어별 변환 방법까지 자세히 다룹니다.


CSV란?

**CSV(Comma-Separated Values)**는 쉼표로 구분된 값들의 집합으로, 표(테이블) 형태의 데이터를 저장하는 가장 단순한 형식입니다.

CSV 구조

이름,나이,도시
홍길동,30,서울
김영희,25,부산
이철수,35,대전

첫 번째 줄은 헤더(열 이름)이고, 이후 줄은 각 행의 데이터입니다. 값 사이를 쉼표로 구분하며, 각 행은 줄바꿈으로 나뉩니다.

CSV의 장점

  • 엑셀 호환성: 더블클릭만으로 엑셀이나 구글 시트에서 열 수 있습니다. 비개발자도 쉽게 다룹니다.
  • 단순함: 특별한 문법이 없어 텍스트 에디터로도 쉽게 작성하고 편집할 수 있습니다.
  • 작은 파일 크기: 같은 데이터를 JSON으로 저장할 때보다 파일이 작습니다. 대량 데이터 전송에 유리합니다.
  • 범용성: 데이터베이스, 통계 도구, BI 도구 등 거의 모든 소프트웨어에서 CSV 가져오기/내보내기를 지원합니다.

CSV의 단점

  • 중첩 구조 불가: 표 형태만 표현할 수 있습니다. 객체 안에 객체, 배열 안에 배열 같은 계층 구조를 담을 수 없습니다.
  • 데이터 타입 없음: 모든 값이 문자열로 저장됩니다. 숫자 30과 문자열 “30”을 구분할 수 없습니다.
  • 표준의 부재: RFC 4180이 있지만, 실제로는 구분자(쉼표 vs 세미콜론 vs 탭), 줄바꿈 문자, 인코딩 등이 파일마다 다릅니다.
  • 특수문자 처리: 값 안에 쉼표나 줄바꿈이 포함된 경우 큰따옴표로 감싸야 하는데, 이 규칙이 종종 혼란을 일으킵니다.

JSON이란?

**JSON(JavaScript Object Notation)**은 키-값 쌍을 기반으로 데이터를 구조화하는 경량 텍스트 형식입니다. 원래 JavaScript에서 유래했지만, 현재는 모든 프로그래밍 언어에서 사용하는 범용 형식입니다.

JSON 구조

[
  {
    "이름": "홍길동",
    "나이": 30,
    "도시": "서울",
    "취미": ["독서", "코딩"]
  },
  {
    "이름": "김영희",
    "나이": 25,
    "도시": "부산",
    "취미": ["요리", "여행"]
  }
]

JSON의 장점

  • 중첩 및 계층 구조: 객체 안에 객체, 배열 안에 배열을 자유롭게 담을 수 있습니다. 복잡한 관계형 데이터를 자연스럽게 표현합니다.
  • 데이터 타입 지원: 문자열, 숫자, 불리언(true/false), null, 배열, 객체를 명확히 구분합니다.
  • 웹 API 표준: REST API의 사실상 표준 응답 형식입니다. 프론트엔드와 백엔드 간 통신에서 가장 많이 사용됩니다.
  • 자기 설명적: 키 이름이 포함되어 있어 데이터만 봐도 의미를 파악할 수 있습니다.

JSON의 단점

  • 파일 크기: 키 이름이 모든 레코드에 반복되므로, 대량의 단순 표 데이터에서는 CSV보다 파일이 커집니다.
  • 가독성 한계: 깊이가 깊어지면 사람이 읽기 어려워집니다. JSON 포매터 같은 도구가 필요합니다.
  • 엑셀 비호환: 엑셀에서 직접 열 수 없습니다. 스프레드시트로 작업하려면 CSV로 변환해야 합니다.

CSV vs JSON 비교표

비교 항목CSVJSON
구조표(행/열)키-값 쌍, 트리
가독성단순 데이터에서 높음구조화된 데이터에서 높음
데이터 타입없음 (모두 문자열)문자열, 숫자, 불리언, null
중첩 지원불가가능
파일 크기작음큼 (키 반복)
엑셀 호환우수직접 열기 불가
API 사용드묾표준
주석비공식 지원불가
적합한 용도대량 테이블 데이터, 스프레드시트API 통신, 설정 파일, 복잡한 구조

실무 활용 사례

1. 엑셀/구글 시트 데이터를 API로 전송 (CSV → JSON)

마케팅팀이 광고 캠페인 데이터를 구글 시트에서 관리하다가, 이를 API 서버로 전송해야 하는 경우가 대표적입니다. 스프레드시트에서 CSV로 내보낸 후, JSON으로 변환하여 API에 POST 요청을 보냅니다.

2. API 응답을 스프레드시트로 정리 (JSON → CSV)

외부 서비스 API에서 받은 JSON 데이터를 팀원들과 공유해야 할 때, CSV로 변환하면 엑셀이나 구글 시트에서 바로 열어볼 수 있습니다. 비개발자 팀원도 데이터를 확인하고 분석할 수 있어 협업이 원활해집니다.

3. 데이터 분석 (pandas)

파이썬의 pandas 라이브러리는 CSV와 JSON 모두 지원합니다. pd.read_csv()로 CSV를 읽고, pd.read_json()으로 JSON을 읽으며, 둘 사이 변환도 to_csv(), to_json() 메서드로 간단히 처리합니다.

4. 데이터베이스 Import/Export

대부분의 데이터베이스는 CSV 형식의 대량 가져오기(bulk import)를 지원합니다. MySQL의 LOAD DATA INFILE, PostgreSQL의 COPY 명령이 대표적입니다. 반대로 MongoDB 같은 NoSQL 데이터베이스는 JSON 형식의 데이터를 직접 저장하므로, mongoimport로 JSON 파일을 바로 가져올 수 있습니다.


변환 시 주의사항

CSV와 JSON을 변환할 때 데이터 손실이나 오류를 방지하려면 다음 사항들을 확인하세요.

인코딩 (UTF-8 BOM)

한글이 포함된 CSV 파일을 엑셀에서 열면 글자가 깨지는 경우가 있습니다. 이는 인코딩 문제입니다. UTF-8 with BOM 인코딩으로 저장하면 엑셀에서도 정상적으로 표시됩니다. JSON은 기본적으로 UTF-8을 사용하므로 이런 문제가 거의 없습니다.

구분자 (콤마 vs 세미콜론)

CSV라는 이름은 “Comma-Separated”이지만, 유럽 국가에서는 소수점에 쉼표를 사용하기 때문에 세미콜론(;)을 구분자로 쓰는 경우가 많습니다. 탭으로 구분된 TSV 파일도 .csv 확장자로 저장되기도 합니다. 변환 전에 구분자를 정확히 확인하세요.

날짜 형식

CSV에서는 날짜가 2026-04-07, 04/07/2026, 7-Apr-2026 등 다양한 형식으로 저장될 수 있습니다. JSON으로 변환할 때 ISO 8601 형식(2026-04-07T00:00:00Z)으로 통일하는 것을 권장합니다.

빈 값과 null 처리

CSV에서 빈 칸은 빈 문자열("")일 수도 있고, 값이 없음(null)을 의미할 수도 있습니다. JSON에서는 빈 문자열("")과 null이 명확히 구분되므로, 변환 시 어떻게 처리할지 미리 결정해야 합니다.

특수문자 이스케이프

CSV에서 값에 쉼표, 줄바꿈, 큰따옴표가 포함되면 큰따옴표로 감싸고 내부 큰따옴표를 이중으로 처리합니다(""). JSON에서는 백슬래시(\)로 이스케이프합니다(\", \n). 변환 도구가 이를 자동으로 처리하는지 확인하세요.


프로그래밍 언어별 변환 방법

Python — csv/json 모듈

파이썬은 표준 라이브러리만으로 CSV ↔ JSON 변환이 가능합니다.

import csv
import json

# CSV → JSON
with open('data.csv', 'r', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    data = list(reader)

with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

# JSON → CSV
with open('data.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

with open('output.csv', 'w', encoding='utf-8', newline='') as f:
    writer = csv.DictWriter(f, fieldnames=data[0].keys())
    writer.writeheader()
    writer.writerows(data)

JavaScript — JSON.parse와 수동 파싱

브라우저나 Node.js에서 CSV를 JSON으로 변환하는 간단한 예시입니다.

// CSV → JSON
function csvToJson(csv) {
  const lines = csv.trim().split('\n');
  const headers = lines[0].split(',');
  return lines.slice(1).map(line => {
    const values = line.split(',');
    return headers.reduce((obj, header, i) => {
      obj[header.trim()] = values[i]?.trim() ?? '';
      return obj;
    }, {});
  });
}

// JSON → CSV
function jsonToCsv(json) {
  const headers = Object.keys(json[0]);
  const rows = json.map(obj =>
    headers.map(h => `"${(obj[h] ?? '').toString().replace(/"/g, '""')}"`).join(',')
  );
  return [headers.join(','), ...rows].join('\n');
}

Excel VBA

엑셀에서 직접 JSON을 처리해야 한다면 VBA 매크로를 사용할 수 있습니다. 다만 JSON 파싱이 복잡하므로, VBA-JSON 같은 오픈소스 라이브러리를 활용하는 것이 실용적입니다. 또는 파워 쿼리(Power Query)의 데이터 가져오기 → JSON 기능을 사용하면 코드 없이도 JSON을 테이블로 변환할 수 있습니다.


마무리

CSV와 JSON은 각각의 강점이 뚜렷한 데이터 형식입니다. 단순한 테이블 데이터를 다룰 때는 CSV가 가볍고 호환성이 좋으며, 계층 구조나 API 통신에서는 JSON이 필수적입니다. 실무에서는 두 형식 사이를 자주 오가게 되므로, 변환 방법과 주의사항을 알아두면 업무 효율이 크게 향상됩니다.

빠르게 CSV와 JSON을 변환해야 한다면, CSV ↔ JSON 변환기를 사용해보세요. 브라우저에서 즉시 변환할 수 있고, 구분자 선택도 지원합니다. 코드를 작성하거나 파일을 업로드하지 않아도 됩니다.