본문 바로가기

CSV → JSON 변환

엑셀·스프레드시트에서 뽑은 CSV를 JSON 배열로 바꿉니다. 첫 줄이 자동으로 키가 됩니다. 숫자와 true/false는 따옴표 없는 값으로 바뀝니다.

로딩 중...

왜 만들었나요

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

Note

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


사용 방법

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

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

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

    가운데 화살표 버튼을 눌러 왼쪽 CSV가 오른쪽 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는 표라서 층을 담지 못합니다. 그래서 CSV에서 JSON으로는 쉽게 가지만, 층이 깊은 JSON을 CSV로 되돌리면 안쪽에 들어 있던 값이 한 칸에 뭉쳐 버립니다.

첫 줄이 이름이 됩니다

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로 내보내면 됩니다
  • 행을 골라 지우거나 정렬할 수는 없습니다 — 열은 필드 패널에서 지울 수 있습니다. 출력을 XLSX 로 고르면 표를 마우스 오른쪽 버튼으로 눌러 행 삭제·정렬 메뉴를 쓸 수 있지만, 결과 파일에 반영되는 것은 셀 값과 열까지입니다. 행 삭제와 정렬은 화면에만 적용되니, 행 단위 정리는 CSV 편집기를 쓰세요
  • 값의 종류를 사용자가 지정할 수 없습니다 — 글자 모양을 보고 자동으로 판단합니다
  • 만들어진 JSON의 구조를 눈으로 살피려면 JSON 트리뷰를 이어서 쓰세요

용어 설명

CSV

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

헤더

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

자주 묻는 질문

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

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

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

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

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

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

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

CSV 파일에는 값의 종류 정보가 담기지 않기 때문입니다. 1500이라는 값이 숫자인지 글자인지 파일만 봐서는 알 수 없어서 모두 글자로 변환됩니다. 코드에서 쓸 때 Number()로 바꾸면 되고, 처음부터 종류를 지켜야 한다면 원본 데이터를 JSON으로 직접 받는 편이 낫습니다.

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

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

마지막 업데이트: