필요한 툴을, 바로 쓸 수 있게

CSV ↔ JSON 변환기

CSV를 붙여 넣거나 파일을 열면 첫 행이 키가 된 JSON 객체 배열이 바로 나오고, JSON을 넣으면 엑셀에서 열리는 CSV가 나옵니다. 쉼표·탭·세미콜론 구분자를 알아서 고르고, 0012 같은 값은 글자 그대로 둡니다. API 응답처럼 중첩된 JSON은 '고객.이름' 같은 열로 펼치고, 아래 표로 보기에서 열마다 숫자·글자·빈 칸이 얼마나 섞였는지와 행마다 어떻게 바뀌었는지 확인할 수 있습니다.

최종 수정 2026-10-20계산은 브라우저 안에서만 처리

입력한 내용과 파일은 서버로 보내지 않고 이 브라우저에서만 변환합니다.

표로 보기

    최종 수정 2026-10-20입력값은 저장하지 않습니다

    ROBERIN 기준필요한 툴을,
    바로 쓸 수 있게.
    • 바로 보이는 화면입력 위치와 결과 위치를 또렷하게 둡니다.
    • 결과 먼저핵심 결과를 앞에 두고, 과정은 필요할 때만 보여줍니다.
    • 요구 줄이기가입이나 불필요한 정보 입력 없이 바로 쓰게 합니다.

    CSV 첫 행은 키가 되고, 데이터 한 행이 JSON 객체 하나가 됩니다

    CSV는 칸을 쉼표로, 행을 줄바꿈으로 나눈 표이고, JSON 객체 배열은 이름과 값의 짝을 묶은 객체를 대괄호 [ ] 안에 늘어놓은 목록입니다. 두 형식은 같은 자료를 담을 수 있습니다. CSV의 첫 행에 적힌 열 이름이 객체의 키가 되고, 그 아래 행 하나가 객체 하나가 됩니다. 위 예시의 첫 행 '상품코드,상품명,가격,재고,메모'는 키 다섯 개가 되고, 데이터 세 행은 객체 세 개가 됩니다. 반대로 JSON을 CSV로 바꿀 때는 객체들에 나오는 키를 모아 열을 만들고 객체 하나를 한 행으로 씁니다.

    이 변환기는 붙여 넣거나 파일을 여는 즉시 변환합니다. 구분자가 쉼표인지 탭·세미콜론·세로선인지 알아서 고르고, 0012처럼 앞자리 0이 있는 값은 기본으로 글자 그대로 둡니다. API 응답처럼 객체 안에 객체가 든 JSON은 '고객.이름' 같은 열로 펼칩니다. 아래 '표로 보기'에서 열마다 숫자·글자·빈 칸이 얼마나 섞였는지 막대로 보이고, 행 번호를 누르면 그 행이 어떤 객체나 CSV 줄이 됐는지 '행 풀이'에 나옵니다. 따옴표나 칸 수가 어긋나면 몇 번째 줄 어디인지 짚어 줍니다. 입력한 내용과 파일은 서버로 보내지 않고 이 브라우저에서만 처리합니다.

    언제 CSV와 JSON을 서로 바꾸나

    • 엑셀 목록을 웹 서비스에 올릴 때: 상품·회원·재고 목록을 스프레드시트로 관리하다가, JSON 배열을 받는 API나 관리 도구에 한꺼번에 넣어야 할 때 CSV를 JSON으로 바꿉니다.
    • API 응답이나 로그를 표로 볼 때: 개발 도구나 서비스에서 받은 JSON을 CSV로 바꾸면 엑셀·구글 시트에서 정렬하고 필터를 걸 수 있습니다. 응답이 { "data": [ … ] }처럼 감싸여 있어도 안의 배열을 골라 표로 만듭니다.
    • 설정·번역 문구·테스트 데이터를 만들 때: 여러 사람이 고치기 쉬운 스프레드시트로 값을 모은 뒤, 프로그램이 읽는 JSON으로 내보냅니다.
    • 두 프로그램이 서로 다른 형식만 받을 때: 한쪽은 CSV로만 내보내고 다른 쪽은 JSON만 받는다면 중간에서 형식을 바꿔 옮깁니다.

    변환 규칙

    1. CSV 읽기: 구분자로 칸을, 줄바꿈으로 행을 나눕니다. 구분자·큰따옴표·줄바꿈이 든 칸은 칸 전체를 큰따옴표로 감싸고, 칸 안의 큰따옴표는 두 번("") 씁니다. 공백도 값의 일부로 그대로 둡니다(RFC 4180). 완전히 빈 줄은 건너뜁니다. 단, 열이 하나뿐인 CSV에서는 빈 줄을 빈 값으로 읽습니다.
    2. 열 이름: 첫 행이 키가 됩니다. 이름이 비었거나 같은 이름이 두 번 나오면 어느 값이 어느 키인지 정할 수 없어 멈춥니다. 첫 행부터 데이터라면 '첫 행'을 '데이터'로 바꾸세요. 열1, 열2 …가 키가 됩니다.
    3. 칸 수 확인: 모든 행의 칸 수가 첫 행과 같아야 합니다. 모자라는 칸을 짐작해 채우거나 남는 칸을 버리지 않고, 어긋난 줄을 알려 줍니다.
    4. 값: 기본값 '모두 문자로'는 모든 칸을 문자열로 옮깁니다. '숫자·참거짓 인식'을 고르면 아래 표의 규칙대로 숫자, true·false, null로 바꿉니다.
    5. JSON → CSV: 객체마다 나오는 키를 처음 나온 순서대로 모아 열을 만듭니다. 어떤 객체에 없는 키와 null은 빈 칸이 됩니다. 객체 안의 객체는 점(.)으로 이은 열 이름, 배열은 0부터 매긴 번호로 펼칩니다.
    6. CSV 쓰기: 구분자·큰따옴표·줄바꿈이 든 칸만 큰따옴표로 감싸고, 줄 끝은 CRLF로 씁니다. 저장할 때만 엑셀용 BOM을 앞에 붙이며, 복사한 글에는 붙이지 않습니다.

    값을 숫자로 바꾸는 기준

    CSV에는 자료형이 없어 모든 칸이 글자입니다. '숫자·참거짓 인식'은 JSON 숫자 문법에 맞고 다시 글자로 바꿔도 값이 같게 돌아오는 칸만 숫자로 바꿉니다. JSON 문법은 앞자리 0을 허용하지 않아 0012는 숫자가 아니고(RFC 8259), 브라우저가 정확히 다루는 정수는 9,007,199,254,740,991(253 − 1)까지라서 그보다 큰 주문 번호는 글자로 남깁니다.

    CSV 칸모두 문자로숫자·참거짓 인식이유
    0012"0012""0012"앞자리 0은 JSON 숫자 문법이 아님
    25900"25900"25900정수
    1.50"1.50"1.5값은 같고 끝의 0은 사라짐
    1e3"1e3"1000지수 표기도 숫자
    TRUE"TRUE"truetrue·false는 대소문자 무관
    null"null"null소문자 null만
    (빈 칸)""""빈 문자열 그대로
    9007199254740993"9007199254740993""9007199254740993"안전한 정수 범위를 넘음
    0.1234567890123456"0.1234567890123456""0.1234567890123456"유효 숫자 16자리는 정확히 못 담음
    -0"-0""-0"숫자로 바꾸면 0이 되어 글자로 둠
    "1,234""1,234""1,234"천 단위 쉼표가 든 값은 글자

    상품 코드·우편번호·전화번호처럼 계산하지 않는 값이 있다면 '모두 문자로'가 안전합니다. '숫자·참거짓 인식'은 열이 아니라 칸마다 판단합니다. 0으로 시작하는 코드는 글자로 남지만 1234나 0 하나처럼 숫자 문법에 맞는 코드는 숫자가 되어, 한 열에 글자와 숫자가 섞일 수 있습니다. 코드 열이 있다면 '모두 문자로'를 쓰세요.

    API 응답 같은 중첩 JSON을 표로 펼치기

    JSON → CSV의 예시는 주문 목록이 '주문' 키 안에 들어 있는 응답입니다. 맨 바깥이 객체이면 그 안에서 객체 배열을 찾아 표로 만들고, 여러 개면 항목이 가장 많은 배열을 먼저 고릅니다. 다른 배열이나 객체 전체를 한 행으로 쓰려면 입력 칸의 '표로 만들 배열'에서 바꿉니다. 객체 안의 객체는 '고객.이름'처럼 점으로 잇고, 배열은 '태그.0'·'태그.1'처럼 번호를 붙입니다.

    번호고객.이름고객.도시수량결제태그.0태그.1메모
    A-0012민지서울2true신규쿠폰
    A-0013준호부산1false

    두 번째 주문에는 '태그'가 없고 '메모'는 null이라 모두 빈 칸입니다. 빈 객체 { }와 빈 배열 [ ]은 값이 사라졌다고 오해하지 않도록 칸에 {}·[] 글자로 남깁니다. 이렇게 펼친 CSV를 다시 JSON으로 바꾸면 '고객.이름'은 점이 든 키 하나가 되고 중첩 구조로 돌아가지 않습니다. 줄마다 객체 하나가 있는 JSON Lines(.jsonl)도 그대로 붙여 넣으면 한 줄을 한 행으로 읽습니다.

    엑셀에서 열고 저장할 때

    • 한글이 깨지지 않게: Microsoft는 UTF-8 CSV가 BOM(바이트 순서 표시)과 함께 저장돼 있으면 엑셀에서 일반 방식으로 열 수 있다고 안내합니다. 그래서 CSV를 저장할 때 '엑셀용 BOM'이 기본으로 켜져 있습니다. BOM 없는 파일은 엑셀의 데이터 › 데이터 가져오기 › 텍스트/CSV에서로 열면 인코딩을 고를 수 있습니다.
    • 세미콜론 CSV: 엑셀이 CSV로 저장할 때 쓰는 목록 구분자는 기본이 쉼표이지만, Windows 지역 설정에서 다른 문자로 바꿀 수 있고 바꾸면 모든 프로그램이 그 문자를 씁니다. 그래서 지역 설정에 따라 세미콜론으로 나뉜 CSV가 나오기도 합니다. 구분자 '자동 인식'이 세미콜론도 고르고, 결과 CSV의 구분자도 바꿀 수 있습니다.
    • 엑셀에서 복사한 칸: 엑셀이나 구글 시트에서 칸을 골라 복사해 붙여 넣으면 칸 사이가 탭으로 들어옵니다. 자동 인식이 탭을 구분자로 고르므로 파일로 저장하지 않고 바로 변환할 수 있습니다.
    • 옛 인코딩 파일: UTF-8로 읽히지 않는 파일은 한국어 Windows의 코드 페이지 949(브라우저에서 EUC-KR이라는 이름으로 다루는 인코딩)로 다시 읽고, 입력 칸 위에 어떤 인코딩으로 읽었는지 적습니다.
    • 엑셀 통합 문서: .xlsx·.xls 파일은 압축된 통합 문서라 바로 열 수 없습니다. 엑셀에서 CSV로 저장한 뒤 여세요.

    CSV 문법은 RFC 4180, JSON 문법과 숫자 범위는 RFC 8259, 엑셀의 BOM·목록 구분자·앞자리 0 설명은 Microsoft 지원 문서를 2026-10-20에 확인했습니다.

    CSV를 거치면 사라지는 정보

    CSV 칸에는 글자만 들어가므로 JSON의 자료형은 CSV를 거치는 동안 남지 않습니다. JSON → CSV → JSON으로 한 바퀴 돌렸을 때 원래와 달라지는 것들입니다.

    원래 JSONCSV 칸다시 JSON(모두 문자로)
    "메모": null(빈 칸)"메모": ""
    "메모": ""(빈 칸)"메모": ""
    키 없음(빈 칸)"메모": ""
    "수량": 33"수량": "3"
    "결제": truetrue"결제": "true"
    "고객": {"이름": "민지"}고객.이름 열에 민지"고객.이름": "민지"

    null과 빈 문자열, 키가 없는 경우를 구분해야 하는 자료라면 원본 JSON을 함께 보관하거나 상태를 적는 열을 따로 두세요. 숫자와 true·false는 '숫자·참거짓 인식'으로 되돌릴 수 있지만, 원래 문자열이던 "3"까지 숫자가 됩니다. 표로 보기의 막대는 원래 JSON 값의 종류를 보여 주므로, null이었던 칸은 빈 칸과 구별해 '참거짓·null'로 칠합니다.

    자주 틀리는 경우

    • 주소 속 쉼표를 감싸지 않습니다: 서울, 성동구를 큰따옴표 없이 쓰면 칸이 하나 늘어 '칸이 6개입니다' 같은 오류가 납니다. "서울, 성동구"처럼 칸 전체를 감쌉니다.
    • 칸 중간에 따옴표를 씁니다: 노트북 거치대 "알루"처럼 칸 중간에 큰따옴표가 있으면 칸 전체를 감싸고 안쪽 따옴표를 두 번 써서 "노트북 거치대 ""알루"""로 적어야 합니다.
    • 머리글 없는 CSV를 그대로 넣습니다: 첫 데이터 행이 열 이름이 되어 한 건이 빠집니다. '첫 행'을 '데이터'로 바꾸세요.
    • 큰 번호를 숫자로 적습니다: JSON에 9007199254740993처럼 큰 정수를 따옴표 없이 넣으면 브라우저가 읽는 순간 값이 바뀝니다. 이 변환기는 그런 값을 만나면 멈추고, 큰따옴표로 감싸 문자열로 넣으라고 알려 줍니다.
    • 같은 키를 한 객체에 두 번 씁니다: JSON 표준은 객체 안의 이름이 고유해야 한다고 권합니다(RFC 8259). 같은 키가 두 번 있으면 이 변환기는 마지막 값만 남깁니다.
    • CSV를 엑셀로 열어 0012가 12가 됩니다: 변환 결과에는 0012가 그대로 있어도 엑셀은 앞자리 0을 지우고 큰 숫자를 1.23E+15 같은 지수 표기로 바꿉니다. 엑셀이 다루는 숫자는 유효 숫자 15자리까지라 16자리 이상인 카드·주문 번호는 끝자리가 0으로 바뀝니다. 데이터 › 텍스트/CSV에서로 가져오면서 그 열의 형식을 텍스트로 지정하세요.

    한계와 주의

    • 입력은 5 MB(5,242,880바이트), 머리글을 포함해 200,000칸, 결과는 10 MB까지 변환합니다. 더 큰 자료는 행 단위로 나누고 나눈 파일마다 같은 머리글을 붙이세요.
    • 표로 보기는 처음 100행·60열만 그립니다. 변환과 복사·저장은 전체 자료로 합니다.
    • CSV → JSON은 언제나 평평한 객체 배열을 만듭니다. 점이 든 열 이름을 중첩 객체로 되돌리지 않습니다.
    • JSON Lines는 읽기만 합니다. 결과를 줄마다 객체 하나로 받으려면 JSON 배열 ↔ JSONL 변환기를 쓰세요.
    • JSON의 소수는 브라우저가 읽을 때 배정밀도 숫자로 바뀌므로 아주 긴 소수는 끝자리가 달라질 수 있습니다. 자릿수를 지켜야 하는 값은 문자열로 넣으세요.
    • =, +, -, @나 탭으로 시작하는 칸은 엑셀이 수식으로 해석할 수 있습니다(OWASP는 이를 CSV 주입, 수식 주입이라고 부릅니다). 이 변환기는 값을 바꾸지 않으므로, 출처를 모르는 자료를 CSV로 바꿔 엑셀로 열 때는 이런 칸이 있는지 먼저 확인하세요.

    출처

    자주 묻는 질문

    CSV를 JSON으로 어떻게 바꾸나요?

    위 입력 칸에 CSV를 붙여 넣거나 파일을 열면 결과 칸에 JSON 객체 배열이 바로 나옵니다. 첫 행의 열 이름이 키가 되고 아래 한 행이 객체 하나가 됩니다. 복사 버튼으로 옮기거나 .json 파일로 저장하세요.

    0012 같은 앞자리 0이 사라지지 않나요?

    사라지지 않습니다. 기본값 '모두 문자로'는 모든 칸을 문자열로 옮기므로 0012는 "0012"가 됩니다. '숫자·참거짓 인식'을 골라도 0으로 시작하는 값은 JSON 숫자 문법에 맞지 않아 글자로 남습니다.

    가격이나 수량을 문자열이 아닌 숫자로 받으려면 어떻게 하나요?

    결과 칸의 '값'을 '숫자·참거짓 인식'으로 바꾸면 25900은 숫자 25900, true·false는 불리언, null은 null이 됩니다. 9,007,199,254,740,991보다 큰 정수와 유효 숫자 16자리 이상인 소수는 값이 바뀌지 않도록 글자로 남깁니다.

    변환한 CSV를 엑셀에서 열면 한글이 깨집니다.

    저장할 때 '엑셀용 BOM'을 켜 두세요. 기본으로 켜져 있으며, BOM이 붙은 UTF-8 CSV는 엑셀에서 바로 열립니다. BOM 없는 파일은 엑셀의 데이터 › 텍스트/CSV에서로 열고 인코딩을 UTF-8로 고르면 됩니다.

    세미콜론이나 탭으로 나뉜 파일도 바꿀 수 있나요?

    바꿀 수 있습니다. 구분자 '자동 인식'이 앞 20줄에서 쉼표·탭·세미콜론·세로선 가운데 줄마다 개수가 같은 것을 고릅니다. 엑셀에서 복사해 붙여 넣은 칸은 탭으로 들어와 그대로 변환됩니다. 결과 CSV의 구분자도 고를 수 있습니다.

    중첩된 JSON이나 API 응답도 CSV로 바꿀 수 있나요?

    바꿀 수 있습니다. 맨 바깥이 객체이면 그 안의 객체 배열을 찾아 표로 만들고, 객체 안의 객체는 '고객.이름'처럼 점으로, 배열은 '태그.0'처럼 번호로 펼칩니다. 다른 배열을 쓰려면 '표로 만들 배열'에서 고르세요. 줄마다 객체가 있는 JSON Lines도 읽습니다.

    첫 행에 열 이름이 없는 CSV는 어떻게 하나요?

    입력 칸의 '첫 행'을 '데이터'로 바꾸세요. 첫 행도 데이터로 읽고 키는 열1, 열2처럼 자동으로 붙입니다. 바꾸지 않으면 첫 데이터 행이 열 이름이 되어 한 건이 빠집니다.

    넣은 데이터가 서버로 전송되나요?

    전송되지 않습니다. 붙여 넣은 글과 연 파일은 이 브라우저 안에서만 변환하고 저장하지 않습니다. 입력은 5 MB, 200,000칸까지 처리합니다.