JSON → CSV 변환

JSON 배열을 엑셀에서 열 수 있는 CSV 표 형식으로 변환합니다.

📁 .json / .csv 파일을 끌어다 놓거나 클릭해서 선택
파일은 브라우저에서만 읽습니다 · 최대 8MB
CSV 결과

📌 엑셀에서 한글이 깨진다면 "엑셀 호환 UTF-8 BOM"을 켜 두세요. 저장(다운로드)한 CSV 파일 앞에 BOM 표식이 붙어 엑셀이 UTF-8로 올바르게 읽습니다. 복사 붙여넣기에는 BOM이 적용되지 않으니, 엑셀로 옮길 때는 "저장" 버튼을 쓰는 편이 안전합니다.

JSON → CSV 변환란?

API로 받은 JSON 데이터를 엑셀이나 구글 스프레드시트에서 바로 열고 싶으신가요? JSON 배열을 CSV 표 형식으로 변환해야 할 때, 설치나 회원가입 없이 웹 브라우저에서 즉시 해결할 수 있습니다. 이 도구는 객체 배열 형태의 JSON을 쉼표(,), 탭(TSV), 세미콜론(;) 등 원하는 구분자를 사용해 CSV로 변환합니다. 반대로 CSV를 JSON으로 바꾸는 양방향 변환도 가능합니다. 특히 { "user": { "name": "홍길동" } } 처럼 중첩된 JSON 객체를 'user.name' 형태의 열로 자동으로 펼쳐주는 '중첩 평탄화' 기능과, 엑셀에서 한글이 깨지는 문제를 해결하는 'UTF-8 BOM' 옵션을 제공합니다. 입력한 모든 데이터는 서버로 전송되지 않고 사용자의 컴퓨터 안에서만 처리되므로 민감한 정보도 안심하고 변환할 수 있습니다.

사용 방법

  1. 변환할 JSON 데이터를 왼쪽 입력창에 붙여넣거나, .json 또는 .csv 파일을 끌어다 놓습니다. 파일 확장자에 따라 변환 방향(JSON↔CSV)이 자동으로 설정됩니다.
  2. 필요에 따라 '중첩 평탄화'나 '엑셀 호환 UTF-8 BOM' 같은 변환 옵션을 선택합니다. 구분자도 쉼표, 탭(TSV), 세미콜론 등으로 바꿀 수 있습니다.
  3. 데이터를 입력하면 변환 결과가 오른쪽 창에 실시간으로 나타납니다. 하단에는 변환된 데이터의 행과 열 개수, 그리고 처음 20행까지의 미리보기 표가 표시됩니다.
  4. 오른쪽 상단의 '복사' 버튼을 눌러 결과를 클립보드에 복사하거나, '저장' 버튼을 눌러 .csv 또는 .json 파일로 다운로드합니다.
  5. 결과를 다시 입력값으로 사용하고 싶다면 '결과를 입력으로' 버튼을, 처음부터 다시 시작하려면 '지우기' 버튼을 사용하세요.

JSON → CSV 변환 사용 가이드

실제 작업에서 이 도구를 어떻게 쓰는지, 무엇을 조심해야 하는지 정리했습니다.

엑셀에서 한글이 깨지는 이유와 BOM

이 도구를 쓰는 사람이 가장 많이 겪는 문제입니다. 변환은 잘 됐는데 엑셀로 열면 물음표나 "占쏙옙" 같은 글자가 나옵니다.

원인은 엑셀에 있습니다. 윈도우 한국어판 엑셀은 CSV 파일을 열 때 UTF-8이라고 가정하지 않고 시스템 기본 인코딩(CP949)으로 읽습니다. UTF-8로 저장된 한글 3바이트를 CP949 표로 읽으니 깨지는 것입니다.

해결책이 BOM입니다. 파일 맨 앞에 EF BB BF(U+FEFF) 세 바이트를 붙여 두면 엑셀이 UTF-8이라고 알아봅니다. "엑셀 호환 UTF-8 BOM" 옵션이 이 일을 합니다.

구글 스프레드시트는 항상 UTF-8로 읽으므로 BOM 없이도 한글이 깨지지 않습니다. 이미 받아 둔 BOM 없는 파일을 엑셀에서 열어야 한다면, 데이터 탭의 텍스트/CSV 가져오기에서 원본 파일 인코딩을 65001(UTF-8)로 지정하면 됩니다.
BOM은 저장(다운로드)할 때만 붙습니다. 결과창을 복사해서 엑셀에 붙여넣으면 BOM이 끼어들 자리가 없습니다. 엑셀로 옮길 거라면 반드시 "저장" 버튼을 쓰세요.

휴대폰번호 앞 0이 사라지는 문제

01012345678이 엑셀에서 1012345678이 되고, 카드번호 16자리가 1.2346E+15로 바뀌는 그 문제입니다. CSV는 값의 타입 정보가 없는 순수 텍스트라, 엑셀이 열면서 "숫자처럼 생겼으니 숫자"라고 제멋대로 판단하기 때문입니다.

이 도구의 CSV → JSON 방향은 이 함정을 피하도록 만들어져 있습니다.

  • 0으로 시작하는 값(01012345678, 04524 같은 우편번호)은 숫자로 바꾸지 않고 문자열로 둡니다.
  • 16자리 이상 숫자(카드번호·일부 계좌번호)도 문자열로 둡니다. 자바스크립트 숫자로 담으면 정밀도를 잃기 때문입니다.
  • true/false/null 은 각각 불리언·null로 변환합니다. "숫자·불리언 자동 인식"을 끄면 모든 값이 문자열로 남습니다.
반대 방향(JSON → CSV)에서 엑셀이 값을 어떻게 해석할지는 이 도구가 관여할 수 없습니다. BOM은 인코딩만 해결하고 셀 서식까지 지정하지는 못합니다. 앞자리 0을 꼭 지켜야 한다면 엑셀에서 새 시트를 열어 해당 열을 텍스트 서식으로 지정한 뒤 데이터 가져오기로 불러오세요.

중첩 JSON 평탄화 — 점 표기의 규칙

API 응답은 대개 중첩돼 있는데 CSV는 평평한 표라, 중첩을 어떻게든 펼쳐야 합니다. "중첩 평탄화"를 켜면 경로를 점으로 이어 열 이름을 만듭니다.

  • 배열은 인덱스가 키가 됩니다. 태그.0, 태그.1 처럼 됩니다. 항목 수가 행마다 다르면 열이 그만큼 늘어납니다.
  • 평탄화를 끄면 중첩 객체는 JSON 문자열 그대로 한 셀에 들어갑니다. 원본 구조를 보존해야 할 때 쓰세요.
  • CSV → JSON 방향에서 평탄화를 켜면 반대로 점이 있는 열 이름을 다시 중첩 객체로 복원합니다. 왕복이 됩니다.
  • 행마다 키가 다르면 모든 행의 키를 모아 열을 만들고, 없는 값은 빈 칸으로 둡니다.
json
{ "주문번호": "A-0042",
  "고객": { "이름": "홍길동", "연락처": "010-1234-5678" },
  "태그": ["신규", "VIP"] }

→ 열: 주문번호 | 고객.이름 | 고객.연락처 | 태그.0 | 태그.1
원래 키 이름에 점이 들어 있으면(예: "user.name"이라는 키 자체) 복원할 때 잘못 쪼개집니다. 평탄화를 끄거나 키 이름을 바꾸는 수밖에 없습니다.

따옴표·쉼표·줄바꿈이 든 값

CSV에서 값 안에 구분자가 들어가면 표가 어긋납니다. 그래서 RFC 4180 규칙에 따라 큰따옴표로 감싸고, 값 안의 큰따옴표는 두 번 반복해 표시합니다. 이 도구는 자동으로 처리합니다.

  • 구분자를 세미콜론(;)으로 바꾸면 유럽 지역 설정의 엑셀에서 바로 열립니다. 한국어 윈도우는 쉼표가 기본입니다.
  • 탭(TSV)을 고르면 저장 시 확장자도 .tsv 가 됩니다. 값에 쉼표가 많은 데이터(주소·상품명)는 TSV가 덜 지저분합니다.
  • 줄 끝은 CRLF로 씁니다. 엑셀·윈도우 호환을 위한 CSV 표준입니다.
원래 값CSV 출력이유
무선 드릴, 20V"무선 드릴, 20V"쉼표가 들어 있음
드릴 세트 "프로""드릴 세트 ""프로"""따옴표는 두 번으로
첫 줄과 둘째 줄 (줄바꿈 포함)따옴표로 감쌈줄바꿈이 들어 있음
여백 " 여백 "엑셀이 앞뒤 공백을 잘라내는 것 방지

입력 형태와 한계

표로 만들려면 "객체들의 배열"이어야 열 이름이 나옵니다. 다만 실제 API 응답이 그렇게 깔끔한 경우가 드물어서, 몇 가지는 알아서 맞춰 줍니다.

  • { "data": [ … ] } 처럼 배열을 감싼 형태 — 배열인 키가 정확히 하나면 그 배열을 자동으로 꺼내 씁니다. 배열 키가 둘 이상이면 어느 쪽인지 알 수 없어 객체 하나짜리 표가 됩니다.
  • 객체 하나만 있는 JSON — 1행짜리 표로 만듭니다.
  • .json / .csv / .tsv 파일을 드래그해 놓으면 확장자를 보고 변환 방향과 구분자를 자동으로 맞춥니다. 최대 8MB이고, 브라우저 안에서만 읽으므로 업로드되지 않습니다.
"결과를 입력으로" 버튼을 누르면 방금 나온 결과가 입력창으로 올라가고 방향이 반대로 뒤집힙니다. JSON → CSV → JSON 왕복이 원본과 같은지 확인하는 가장 빠른 방법입니다. 숫자 자동 인식이나 평탄화 설정 때문에 미묘하게 달라지는 지점을 여기서 잡아낼 수 있습니다.

자주 묻는 질문

어떤 JSON 형태가 되나요?

기본적으로 [{ "이름": "홍길동" }, { "이름": "김철수" }] 와 같이 객체들이 배열로 묶인 형태를 지원합니다. 만약 { "results": [...] } 처럼 데이터가 다른 키 안에 배열로 포함된 경우, 자동으로 배열을 찾아 변환합니다. 단일 객체 { "이름": "홍길동" } 를 넣으면 1행짜리 표로 만들어줍니다.

엑셀에서 열었더니 한글이 깨져요.

엑셀에서 한글 CSV를 열 때 깨지는 현상을 막으려면, '엑셀 호환 UTF-8 BOM' 옵션을 켠 상태로 '저장' 버튼을 눌러 파일을 다운로드하세요. 이 옵션은 파일 맨 앞에 특수한 인식표(BOM)를 추가하여 엑셀이 UTF-8 인코딩으로 파일을 읽게 만듭니다. 복사/붙여넣기 시에는 BOM이 포함되지 않으므로, 한글이 있다면 파일로 저장해 여는 것이 가장 확실합니다.

'중첩 평탄화'는 무엇인가요?

JSON 안에 객체가 또 들어있는 중첩 구조를 표로 보기 좋게 펼쳐주는 기능입니다. 예를 들어 { "고객": { "이름": "홍길동" } } 이라는 데이터가 있을 때, 이 옵션을 켜면 '고객.이름'이라는 새로운 열이 만들어지고 그 값으로 '홍길동'이 채워집니다. 옵션을 끄면 '고객' 열에 JSON 문자열 `{"이름":"홍길동"}`이 통째로 들어갑니다.

입력한 데이터를 서버에 저장하나요?

아니요, 저장하지 않습니다. 툴즈25시의 모든 도구는 사용자의 웹 브라우저 안에서만 동작합니다. JSON-CSV 변환 역시 서버로 어떠한 데이터도 전송하지 않으므로, 개인정보나 민감한 사내 데이터를 외부 유출 걱정 없이 안심하고 사용하셔도 됩니다.