포켓인포
테크 가이드

CSV와 JSON 차이와 상호 변환 — 표 데이터 다루기

CSV와 JSON의 구조 차이와 헤더 기반 상호 변환 원리, 쉼표·따옴표 처리 주의점을 예시로 정리합니다.

엑셀에서 내려받은 표를 프로그램에 넣거나, API가 돌려준 데이터를 스프레드시트로 열어보고 싶을 때 마주치는 두 형식이 CSV와 JSON입니다. 같은 표 데이터를 다루지만 생긴 모습과 쓰임새가 달라 서로 변환할 일이 잦습니다. 두 형식의 구조 차이와 헤더를 기준으로 한 변환 원리, 그리고 쉼표·따옴표 때문에 데이터가 깨지는 상황을 정리합니다. 직접 바꿔 보려면 CSV ↔ JSON 변환 도구를 이용하세요.

한눈에 보기

  • CSV는 쉼표로 칸을 나눈 텍스트 표이며, 보통 **첫 줄이 헤더(열 이름)**입니다.
  • JSON은 키와 값으로 이뤄진 데이터 형식으로, 웹 API·프로그램에서 널리 쓰입니다.
  • 표 데이터를 JSON으로 바꾸면 대개 객체 배열 형태가 됩니다. 헤더가 키, 각 행이 하나의 객체입니다.
  • 값 안에 쉼표·줄바꿈·따옴표가 있으면 큰따옴표로 감싸고 이스케이프해야 합니다.
  • CSV는 엑셀·스프레드시트에, JSON은 웹·프로그램에 강해 둘 사이 변환이 자주 필요합니다.

CSV란

CSV(Comma-Separated Values)는 이름 그대로 쉼표로 칸을 구분한 텍스트 표입니다. 한 줄이 하나의 행(row)이고, 쉼표 하나가 칸과 칸의 경계가 됩니다. 보통 첫 줄에 열 이름을 적는데, 이를 헤더(header)라고 부릅니다.

name,age
홍길동,30
이순신,45

위 예에서 첫 줄 name,age가 헤더이고, 그 아래 두 줄이 실제 데이터 행입니다. 구조가 단순한 순수 텍스트라 엑셀·구글 스프레드시트는 물론 거의 모든 프로그램이 읽을 수 있어, 데이터를 주고받는 공용 형식으로 널리 쓰입니다.

JSON이란

JSON(JavaScript Object Notation)은 키-값 쌍으로 이뤄진 데이터 형식입니다. "키": 값 모양으로 정보를 표현하며, 객체는 중괄호 {}, 목록은 대괄호 []로 묶습니다.

{ "name": "홍길동", "age": "30" }

CSV가 표 한 장처럼 평면적이라면, JSON은 값 안에 또 다른 객체나 목록을 담아 계층 구조를 표현할 수 있습니다. 웹 API의 응답, 설정 파일, 프로그램 간 데이터 교환 등에서 사실상 표준처럼 쓰입니다.

상호 변환 원리

표 데이터를 JSON으로 바꿀 때 가장 흔한 결과는 객체 배열입니다. 헤더의 각 열 이름이 키가 되고, 데이터 행 하나하나가 그 키들을 가진 객체 하나로 바뀝니다.

단계CSVJSON
헤더name,age키 → "name", "age"
1행홍길동,30{"name":"홍길동","age":"30"}

예를 들어 name,age\n홍길동,30 는 다음과 같이 바뀝니다.

[{ "name": "홍길동", "age": "30" }]

반대로 JSON을 CSV로 되돌릴 때는 객체들의 키를 모아 헤더 한 줄을 만들고, 각 객체의 값을 같은 순서로 줄마다 늘어놓습니다. 핵심은 헤더(키)와 값의 순서를 일치시키는 것입니다.

주의점

변환에서 데이터가 깨지는 원인은 대부분 특수 문자 처리입니다.

  • 값 안의 쉼표: 칸을 나누는 쉼표와 헷갈리지 않도록, 값을 큰따옴표로 감쌉니다. 예: "서울, 강남".
  • 값 안의 줄바꿈: 한 칸 안에 줄바꿈이 들어가도 큰따옴표로 감싸면 한 칸으로 인식됩니다.
  • 값 안의 따옴표: 큰따옴표 자체를 표현하려면 큰따옴표를 두 번 써서 이스케이프합니다("").
  • 숫자처럼 보이는 값: CSV는 모든 칸이 텍스트라 30 같은 값도 변환 시 문자열("30")로 들어가는 경우가 많습니다. 숫자로 다뤄야 한다면 변환 후 따로 처리합니다.

이런 규칙을 손으로 일일이 챙기기는 번거롭습니다. CSV ↔ JSON 변환 도구를 쓰면 헤더 인식과 따옴표 처리를 자동으로 해 줍니다.

자주 묻는 질문

CSV 첫 줄이 항상 헤더인가요?

대부분 첫 줄을 헤더(열 이름)로 쓰지만, 헤더 없이 데이터만 담긴 파일도 있습니다. 변환할 때 첫 줄을 헤더로 볼지 여부를 미리 확인하는 것이 좋습니다.

값 안에 쉼표가 있으면 어떻게 되나요?

칸 구분 쉼표와 섞이지 않도록 그 값을 큰따옴표로 감싸야 합니다. 예: "서울, 강남구"처럼 감싸면 쉼표가 있어도 한 칸으로 유지됩니다.

JSON을 CSV로 바꾸면 계층 구조는 어떻게 되나요?

CSV는 평면적인 표라 중첩된 객체나 목록을 그대로 담기 어렵습니다. 보통 한 단계로 펼치거나 일부 정보를 합쳐서 표현하므로, 깊은 구조의 JSON은 변환 시 정보가 단순해질 수 있습니다.

숫자가 문자열로 바뀌는 이유는 무엇인가요?

CSV는 모든 칸을 텍스트로 취급하기 때문입니다. 30도 변환 과정에서 "30"처럼 문자열로 들어가는 경우가 많아, 계산에 쓰려면 변환 뒤 숫자로 다시 바꿔야 합니다.

마무리

CSV는 표를 다루는 도구에, JSON은 웹과 프로그램에 강합니다. 헤더가 키가 되고 각 행이 객체가 된다는 원리만 이해하면 두 형식 사이를 오가는 일이 어렵지 않습니다. 값 안의 쉼표·줄바꿈·따옴표만 주의하면 됩니다. 표 데이터를 바로 바꿔 보고 싶다면 CSV ↔ JSON 변환 도구를 활용해 보세요.

#CSV JSON 변환#CSV#JSON#데이터 변환#표 데이터

🧰 관련 도구

관련 글