본문 바로가기

CSV → JSON 변환

엑셀·스프레드시트에서 뽑은 CSV를 JSON 배열로 바꿉니다. 첫 줄이 자동으로 키가 됩니다.

로딩 중...

왜 만들었나요

기획자가 준 시트를 코드에 넣으려면 매번 손으로 배열을 만들거나 CSV 파싱 스크립트를 짜야 했습니다. 표 한 장 옮기자고 그러기엔 아까워서, 붙여넣으면 바로 나오게 만들었습니다.

Note

붙여넣은 데이터는 서버로 전송되지 않습니다. 변환이 전부 브라우저 안에서 이뤄져, 고객 명단이나 매출 자료도 기기 밖으로 나가지 않습니다.


CSV → JSON 변환 사용 방법

  1. 위쪽 입력창에 CSV를 붙여넣습니다. 첫 줄이 헤더로 인식되어 각 열의 키가 됩니다. 파일 아이콘으로 불러오거나 샘플로 시작해도 됩니다.

    CSV 입력 탭 INPUT에 첫 줄이 헤더인 CSV 4줄을 붙여넣은 화면

  2. 가운데 화살표를 누르면 변환됩니다. 입력을 멈추면 잠깐 뒤 자동으로도 변환되어, 값을 고치면서 결과가 어떻게 바뀌는지 바로 볼 수 있습니다.

    위쪽 CSV 칸과 아래쪽 OUTPUT 칸 사이의 가운데 화살표 버튼을 눌러 JSON 3건이 채워진 화면

  3. 아래쪽 JSON을 복사해 코드에 붙여넣거나 파일로 내려받습니다.

    변환된 JSON 결과와 형식 선택(JSON·YAML·XLSX)·복사·내려받기 버튼

이렇게 나옵니다

상품 목록 시트를 넣으면 이렇게 나옵니다.

넣은 것                     나온 것
name,price,stock            [
사과,1500,20        →         { "name": "사과", "price": 1500, "stock": 20 },
배,3000,15                    { "name": "배", "price": 3000, "stock": 15 }
                            ]

첫 줄(name,price,stock)이 키가 되고, 나머지 줄이 각각 하나의 항목이 됩니다. 숫자로 읽히는 값은 따옴표 없이 숫자로 나옵니다.

알아두면 좋은 것

CSV와 JSON은 구조가 다릅니다

CSVJSON
모양표 (행과 열)층이 있는 구조
층없음 — 모두 평평함안에 또 안에 들어갈 수 있음
값의 종류파일에는 표시가 없음숫자·참거짓·목록 구분

CSV는 표라서 층을 담지 못합니다. 그래서 층이 있는 JSON을 CSV로 되돌릴 때는 표 모양으로 펴 줍니다.

원래 JSONCSV 로 펴진 모양
customer: { name, tel }customer.name · customer.tel 열이 나뉩니다
items: [{ product, qty }, …]items.product · items.qty 열로 나뉘고 항목마다 행이 늘어납니다
tags: ["급배송", "선물"]한 칸에 ["급배송","선물"] 로 뭉칩니다

즉 한 칸에 뭉치는 것은 문자열이나 숫자만 든 단순 목록뿐입니다. 객체와 객체 배열은 열과 행으로 펴지니, 되돌린 CSV를 다시 JSON으로 바꾸면 층이 대체로 복원됩니다.

첫 줄이 이름이 됩니다

CSV의 첫 줄이 JSON의 항목 이름이 되고, 두 번째 줄부터가 실제 데이터가 됩니다.

CSV                          JSON
이름,나이                     [
홍길동,30           →           { "이름": "홍길동", "나이": 30 },
김철수,25                       { "이름": "김철수", "나이": 25 }
                              ]

그래서 첫 줄에 반드시 열 이름이 있어야 합니다. 데이터가 바로 시작하면 첫 번째 데이터가 이름이 되어 한 줄이 통째로 사라집니다.

CSV를 JSON으로 바꾸는 이유

표로 정리한 데이터를 코드나 API에 넣으려면 형태를 바꿔야 합니다. 대표적인 상황은 이렇습니다.

상황이유
엑셀 데이터를 개발에 넘기기표를 코드에서 쓰는 형태로
테스트 데이터 만들기엑셀로 정리해 JSON으로 변환
API에 넣을 자료 준비대부분의 API가 JSON을 받습니다
설정값 옮기기표로 관리하고 JSON으로 내보내기

이런 경우에는

숫자로 나오지 않기를 바랐는데 숫자가 됐어요

CSV에는 값의 종류 정보가 없어서, 이 도구는 글자 모양을 보고 판단합니다. 1500은 숫자로, true/false는 참거짓으로 바뀝니다.

  • 앞자리에 0이 있는 값(007, 010-1234-5678 등)은 숫자로 바꾸면 0이 사라지므로 글자로 그대로 둡니다
  • 너무 큰 정수도 값이 어긋나지 않게 글자로 둡니다
  • 그래도 숫자로 바뀌는 것이 곤란하면, 원본에서 값 앞에 작은따옴표를 붙이거나 변환 뒤 결과창에서 직접 고치면 됩니다

값 안에 쉼표가 있어서 열이 밀려요

CSV는 쉼표로 열을 나누기 때문에, 값 안에 쉼표가 있으면 "서울, 강남구" 처럼 큰따옴표로 감싸야 합니다. 엑셀에서 CSV로 저장하면 자동으로 처리되지만, 손으로 만든 파일이면 확인해 보세요.

한글이 깨져요

윈도우 엑셀에서 만든 CSV는 EUC-KR 방식으로 저장되는 경우가 많습니다. 파일을 불러온 뒤 읽기 인코딩을 EUC-KR로 바꾸면 한글이 정상으로 보입니다.

반대로 웹 서비스에서 받은 파일은 대개 UTF-8입니다. 어느 쪽인지 모르겠다면 두 가지를 번갈아 골라 보고, 글자가 제대로 보이는 쪽으로 두면 됩니다.

애초에 깨지지 않게 하려면 엑셀에서 저장할 때 형식을 CSV UTF-8 로 고르세요.

첫 줄 데이터가 사라졌어요

첫 줄을 열 이름으로 읽기 때문입니다. 데이터가 바로 시작하는 파일이라면 그 첫 줄이 이름으로 쓰이고 데이터에서는 빠집니다.

붙여넣기 전에 맨 위에 열 이름 줄을 한 줄 추가해 주세요. 마땅한 이름이 없으면 열1,열2,열3처럼 임시로 적어도 됩니다.

이 도구로는 안 되는 것

  • JSON을 CSV로 되돌리려면 맨 위 탭을 JSON 으로 바꾸거나 JSON 편집기에서 CSV로 내보내면 됩니다
  • 조건으로 행을 걸러낼 수는 없습니다 — "값이 0인 행만 빼기"처럼 조건을 거는 기능은 없습니다. 다만 출력을 XLSX 로 고르면 표에서 필요 없는 행을 직접 골라 지우고 정렬할 수 있고, 그 결과가 내려받는 파일에 그대로 담깁니다(표를 마우스 오른쪽 버튼으로 누르면 메뉴가 열립니다). 열을 빼는 것은 필드 패널에서 합니다
  • 값의 종류를 사용자가 지정할 수 없습니다 — 글자 모양을 보고 자동으로 판단합니다
  • 만들어진 JSON의 구조를 눈으로 살피려면 JSON 뷰어를 이어서 쓰세요

용어 설명

CSV

값을 쉼표로 구분해 저장한 표 파일입니다. 엑셀·구글 시트에서 "CSV로 내보내기"를 하면 만들어지고, 메모장으로 열면 글자 그대로 보입니다.

헤더

CSV의 첫 줄입니다. 각 열이 무슨 값인지 이름을 적어 두는 줄로, 이 도구는 이 줄을 JSON의 키로 씁니다.

CSV → JSON 변환 자주 묻는 질문

CSV 파일의 첫 줄이 제목이 아니면 어떻게 되나요?

첫 줄의 내용을 JSON 항목 이름으로 쓰기 때문에, 제목 줄 없이 데이터가 바로 시작하면 첫 번째 데이터가 이름이 되어 그 줄이 통째로 사라집니다. 붙여넣기 전에 맨 위에 열 이름 줄을 한 줄 추가해 주세요. 마땅한 이름이 없다면 열1,열2,열3처럼 임시로 적어도 됩니다.

엑셀에서 만든 CSV의 한글이 깨져요.

윈도우 엑셀은 보통 EUC-KR 방식으로 저장합니다. 파일을 불러온 뒤 '읽기 인코딩'을 EUC-KR로 바꾸면 한글이 정상적으로 표시됩니다. 반대로 웹 서비스에서 받은 파일은 대개 UTF-8이니, 어느 쪽인지 모르겠다면 두 가지를 번갈아 골라 보고 글자가 제대로 보이는 쪽으로 두면 됩니다. 애초에 깨지지 않게 하려면 엑셀에서 저장할 때 형식을 'CSV UTF-8'로 고르세요.

데이터 용량 제한이 있나요?

입력 용량은 5MB까지입니다. 브라우저 탭이 멈추는 것을 막기 위한 제한이며, 보통 수만 행까지는 문제없이 변환됩니다. 그보다 큰 파일은 엑셀에서 나눠 저장한 뒤 하나씩 변환해 주세요. 변환은 전부 브라우저 안에서 이뤄져 데이터가 서버로 전송되지 않으므로, 고객 명단처럼 민감한 자료도 안심하고 다룰 수 있습니다.

숫자가 따옴표에 싸여 나옵니다.

이 도구는 값의 모양을 보고 종류를 알아서 판단합니다. 1500은 숫자 1500으로, true·false는 참거짓으로 바뀌어 따옴표 없이 나옵니다. 그래도 따옴표가 붙었다면 그 값이 숫자로 다루면 안 되는 모양이라고 판단한 경우입니다. 대표적으로 007이나 01012345678처럼 맨 앞이 0으로 시작하는 값은 숫자로 바꾸면 앞의 0이 사라지므로 글자로 남기고, 계산에 쓸 수 없을 만큼 큰 정수도 값이 어긋나지 않게 글자로 남깁니다. 0으로 시작하는 전화번호·우편번호·사번이 이 규칙 덕분에 원래 모습을 지킵니다(0으로 시작하지 않는 값은 숫자로 바뀝니다).

값 안에 쉼표가 있으면 열이 밀립니다.

CSV는 쉼표를 기준으로 칸을 나누는 형식이라, 값 자체에 쉼표가 포함되면 그 지점에서 칸이 하나 더 생겨 버립니다. 주소나 천 단위 구분이 들어간 금액에서 특히 자주 겪습니다. 해결하려면 그 값을 큰따옴표로 감싸면 되는데("서울, 강남구"), 엑셀에서 CSV로 저장하면 자동으로 처리되므로 손으로 만든 파일만 확인하시면 됩니다.

마지막 업데이트: