홈
DT

CSV를 JSON으로, JSON을 CSV로

엑셀에서 뽑은 CSV와 API용 JSON을 양방향으로 변환합니다.

이 도구는 100% 브라우저에서 실행됩니다. 입력한 데이터는 서버로 전송되지 않습니다.

CSV와 JSON은 같은 표 데이터를 다루면서도 사는 세계가 다릅니다. CSV는 엑셀과 스프레드시트, 데이터 분석 도구의 언어이고 JSON은 API와 애플리케이션의 언어입니다. 실무에서는 이 둘 사이를 오가는 일이 끊임없이 생깁니다 — 기획팀이 엑셀로 정리한 상품 목록을 API에 넣거나, API 응답을 엑셀로 열어 확인해야 하는 식입니다.

이 도구는 그 변환을 양방향으로 처리하면서 CSV 파싱의 까다로운 부분을 대신 다뤄 줍니다. 값 안에 쉼표가 있어 따옴표로 감싼 필드, 따옴표 안의 따옴표, 값 중간의 줄바꿈처럼 직접 split(',') 으로 처리하면 반드시 깨지는 경우들을 정확히 읽어 냅니다.

사용 방법

  1. 방향 고르기 — 위쪽에서 CSV → JSON 또는 JSON → CSV를 고릅니다. 방향을 바꿔도 양쪽 입력은 각각 기억되므로, 왔다 갔다 하면서 작업해도 내용이 지워지지 않습니다.
  2. 구분자와 헤더 확인하기 — 구분자는 기본이 자동 감지입니다. 쉼표 대신 세미콜론을 쓰는 유럽식 CSV나 탭으로 구분된 TSV도 알아서 잡아냅니다. 잘못 감지됐다면 직접 지정하세요. 첫 줄이 헤더가 아닌 파일이라면 첫 줄을 헤더로 옵션을 끄면 됩니다.
  3. JSON 모양 정하기 — 세 가지 중에서 고릅니다. 객체 배열은 API가 가장 흔히 쓰는 형태이고, 2차원 배열은 헤더 행을 포함한 배열이라 구글 시트 API 등에서 쓰며, 컬럼은 컬럼별로 값을 모은 형태로 판다스나 차트 라이브러리에 넣기 좋습니다.
  4. 미리 보고 내려받기 — 아래 미리보기 표에서 앞 10행이 제대로 파싱됐는지 확인한 뒤 복사하거나 파일로 내려받습니다. 숫자가 문자열로 남아 있다면 숫자·불리언 자동 변환을 켜세요.

자주 묻는 질문

엑셀에서 열었더니 한글이 깨집니다.

엑셀이 CSV 파일을 열 때 UTF-8이 아니라 시스템 기본 인코딩으로 읽으려 하기 때문입니다. 파일 자체는 정상입니다.

엑셀에서 데이터 › 텍스트/CSV 가져오기로 열면 인코딩을 고를 수 있으니 UTF-8을 지정하세요. 파일을 더블클릭해서 여는 방식으로는 이 선택지가 나오지 않습니다. 구글 스프레드시트나 LibreOffice는 UTF-8을 기본으로 인식하므로 이 문제가 없습니다.

숫자가 문자열로 나오거나, 반대로 원치 않게 숫자가 됩니다.

숫자·불리언 자동 변환 옵션으로 조절합니다. 켜면 123 은 숫자로, true 는 불리언으로 바뀝니다.

주의할 값이 있습니다. 전화번호 010-1234-5678 이나 우편번호 06234 처럼 앞자리 0이 의미를 갖는 값은 숫자로 바뀌면 0이 사라집니다. 사번이나 계좌번호도 마찬가지입니다. 이런 컬럼이 있다면 자동 변환을 끄고 전부 문자열로 두는 편이 안전합니다.

중첩된 JSON을 CSV로 바꾸면 어떻게 되나요?

중첩된 객체나 배열은 셀 안에 JSON 문자열 그대로 남습니다. 예를 들어 {"address": {"city": "서울"}} 은 address 열에 {"city":"서울"} 이 들어갑니다.

평탄화해서 address.city 같은 열을 만들지 않는 이유는, 배열이 섞이면 행 수가 곱셈으로 늘어나 원본과 대응이 깨지기 때문입니다. 중첩 구조를 표로 펼쳐야 한다면 어떤 기준으로 펼칠지 사람이 정해야 하므로, 미리 원하는 모양으로 평탄화한 JSON을 넣어 주세요.

행이 밀리거나 열이 어긋나게 파싱됩니다.

대개 따옴표가 짝이 맞지 않아서 생깁니다. 값 안에 큰따옴표를 쓰려면 "" 처럼 두 번 겹쳐야 하는데, 한 번만 있으면 파서가 그 뒤 전체를 하나의 값으로 읽어 버립니다.

오류 메시지에 몇 번째 행에서 문제가 생겼는지 표시되므로 그 근처를 확인해 보세요. 값 안에 줄바꿈이 있는 경우도 흔한 원인인데, 이 경우 전체가 따옴표로 감싸여 있어야 정상 처리됩니다.

알아두면 좋은 개념

CSV에는 표준이 없다시피 하다

RFC 4180이 있긴 하지만 강제력이 없고, 실제 파일들은 저마다 다릅니다. 구분자가 쉼표가 아닐 수 있고(유럽에서는 소수점에 쉼표를 써서 세미콜론을 구분자로 씁니다), 줄바꿈이 LF일 수도 CRLF일 수도 있으며, 헤더가 없을 수도 있고, 파일 앞에 BOM이 붙어 있을 수도 있습니다.

그래서 CSV 파싱은 '규칙대로 자르기'가 아니라 '추측하고 맞춰 가기'에 가깝습니다. 이 도구가 구분자를 자동 감지하고 여러 형식을 허용하는 이유입니다. 직접 CSV를 만들어 배포한다면 UTF-8, 쉼표 구분, CRLF 줄바꿈, 헤더 포함이 가장 널리 통합니다.

왜 JSON은 표가 되기 어려운가

CSV는 본질적으로 2차원 격자입니다. 모든 행이 같은 열을 가져야 하고 값은 스칼라여야 합니다. 반면 JSON은 트리 구조라 값 안에 객체와 배열이 얼마든지 중첩될 수 있습니다.

이 차이 때문에 JSON → CSV는 정보 손실이 있는 변환입니다. 반대로 CSV → JSON은 손실이 없습니다. 그래서 데이터를 오래 보관하거나 원본으로 삼아야 한다면 JSON 쪽이 안전하고, CSV는 사람이 열어 보거나 스프레드시트로 넘기기 위한 내보내기 형식으로 생각하는 편이 좋습니다.

CSV를 엑셀에서 열 때 생기는 변형

엑셀은 CSV를 열면서 값을 마음대로 해석합니다. 1-2 를 1월 2일로 바꾸고, 긴 숫자를 지수 표기(1.23E+15)로 만들고, 앞자리 0을 지웁니다. 그렇게 열린 파일을 다시 저장하면 원본 데이터가 훼손됩니다.

유전자 이름 일부가 날짜로 바뀌는 문제가 학계에서 실제로 보고되어 유전자 이름 표기법이 바뀐 사례까지 있습니다. CSV를 검수용으로만 열고 저장은 하지 않거나, 텍스트 가져오기에서 문제되는 열의 형식을 '텍스트'로 지정해 여는 습관이 필요합니다.

함께 쓰면 좋은 도구

최종 업데이트: 2026-08-13