JSON 데이터 변환 방법 - CSV, 엑셀, XML로 자유롭게 바꾸는 완벽 가이드
JSON 데이터 변환 방법을 처음부터 정리했습니다. 웹 도구부터 파이썬, 자바스크립트 코드까지 상황별로 가장 빠른 방법과 자주 터지는 오류 해결법을 함께 담았습니다.
![]()
API 응답을 받았는데 온통 중괄호와 대괄호로 뒤덮인 JSON 덩어리만 보일 때가 있습니다. 이걸 엑셀에 넣어 표로 정리하고 싶은데 그대로 붙여넣으면 한 셀에 전부 뭉개져 버립니다. 반대로 거래처가 준 CSV 파일을 시스템에 올리려니 JSON 형식만 받는다고 합니다. 데이터를 다루다 보면 형식이 안 맞아서 막히는 일이 생각보다 자주 생깁니다.
핵심은 어렵지 않습니다. JSON은 결국 키와 값으로 이루어진 구조이고, CSV나 엑셀은 행과 열로 이루어진 표입니다. 이 둘 사이를 어떻게 오가는지만 알면 됩니다. 상황별로 가장 빠른 방법을 정리했습니다.
JSON 변환이 필요한 순간
JSON은 사람이 읽기에도 나쁘지 않지만, 데이터가 수백 줄 넘어가면 눈으로 파악하기 어렵습니다. 그래서 다른 형식으로 바꿔야 할 일이 생깁니다. 대표적인 상황은 다음과 같습니다.
- API에서 받은 JSON 응답을 엑셀로 정리해 보고서에 넣어야 할 때
- 데이터베이스에 넣기 위해 JSON을 CSV로 변환해야 할 때
- 레거시 시스템이 XML만 받아서 JSON을 XML로 바꿔야 할 때
- 설정 파일을 사람이 읽기 좋게 YAML로 바꾸고 싶을 때
변환의 방향을 먼저 정하세요. JSON에서 표 형식으로 갈 때와 표에서 JSON으로 올 때는 신경 써야 할 부분이 완전히 다릅니다. 전자는 중첩 구조를 어떻게 펼칠지, 후자는 데이터 타입을 어떻게 지킬지가 관건입니다.
JSON을 CSV·엑셀로 변환하기
가장 흔한 작업입니다. JSON이 [{"name":"홍길동","age":30}, ...]처럼 같은 형태의 객체가 배열로 들어 있다면 변환이 깔끔하게 됩니다. 각 객체가 한 행이 되고, 키가 열 이름이 됩니다.
웹 도구로 바로 변환
설치 없이 가장 빠른 방법은 온라인 변환기입니다. JSON을 붙여넣고 버튼 한 번이면 CSV나 엑셀 파일이 나옵니다. 다만 회사 내부 데이터나 개인정보가 든 JSON은 외부 사이트에 올리지 않는 편이 안전합니다.
엑셀 자체 기능 활용
엑셀 2016 이상이라면 데이터 탭의 파워 쿼리로 JSON 파일을 직접 불러올 수 있습니다. 데이터 가져오기에서 JSON을 선택하면 표 형태로 펼쳐 주고, 중첩된 항목도 단계별로 확장할 수 있습니다.
CSV·XML을 JSON으로 바꾸기
반대 방향도 자주 필요합니다. 엑셀로 관리하던 데이터를 API에 보내거나 웹에서 쓰려면 JSON으로 바꿔야 합니다. 이때 가장 주의할 점은 데이터 타입입니다.
CSV는 모든 값을 문자로 취급합니다. 그래서 숫자 30이 변환 과정에서 문자열 "30"이 되어 버리는 일이 흔합니다. 받는 쪽 시스템이 타입을 엄격하게 검사하면 여기서 오류가 납니다. 변환 도구가 숫자, 불리언, 빈 값을 제대로 인식하는지 확인해야 합니다.
형식별 변환 난이도와 주의점을 표로 정리했습니다.
| 변환 방향 | 난이도 | 핵심 주의점 |
|---|---|---|
| JSON → CSV | 쉬움 | 중첩 구조 평탄화 필요 |
| CSV → JSON | 보통 | 숫자·불리언 타입 유지 |
| JSON → XML | 보통 | 배열을 태그로 어떻게 감쌀지 |
| XML → JSON | 어려움 | 속성과 텍스트 노드 구분 |
| JSON → YAML | 쉬움 | 들여쓰기 일관성 |
코드로 JSON 변환하기
같은 작업을 반복하거나 데이터 양이 많다면 코드가 훨씬 빠릅니다. 한 번 짜 두면 파일만 바꿔서 계속 돌릴 수 있습니다.
파이썬
파이썬은 표준 라이브러리만으로 충분합니다. json 모듈로 JSON을 읽고, csv 모듈로 내보냅니다. pandas를 쓰면 단 두 줄로 끝납니다. df = pd.read_json('data.json') 다음에 df.to_csv('data.csv', index=False)면 됩니다. 엑셀로 바로 내보내려면 to_excel을 쓰면 됩니다.
자바스크립트
브라우저나 Node.js에서는 JSON.parse와 JSON.stringify가 기본입니다. 문자열을 객체로 바꿀 때는 JSON.parse, 객체를 다시 문자열로 만들 때는 JSON.stringify를 씁니다. 보기 좋게 들여쓰려면 JSON.stringify(obj, null, 2)처럼 세 번째 인자에 공백 수를 넣습니다.
변환 중 자주 터지는 오류
변환이 안 될 때 원인은 대부분 정해져 있습니다. 아래 세 가지만 점검해도 절반 이상 해결됩니다.
- 인코딩 깨짐: 한글이 물음표나 깨진 문자로 나오면 UTF-8 여부를 확인합니다. 엑셀은 기본 인코딩이 달라 BOM이 붙은 UTF-8로 저장해야 깔끔합니다.
- 따옴표 문제: JSON은 키와 문자열에 반드시 큰따옴표를 씁니다. 작은따옴표를 쓰거나 마지막 항목 뒤에 쉼표가 남으면 파싱이 실패합니다.
- 중첩 구조 손실: 깊은 구조의 JSON을 CSV로 바꾸면 안쪽 데이터가 통째로 사라지거나 한 셀에 뭉칩니다. 평탄화 옵션을 켜거나 필요한 부분만 추출하세요.
변환한 결과를 다른 사람과 공유할 때, 파일이 크거나 링크가 너무 길어지는 경우가 있습니다. 이럴 때 결과 페이지나 다운로드 주소를 미투 단축URL로 줄이면 메신저나 문서에 붙여넣기 깔끔합니다.
변환 도구 고르는 기준
도구는 데이터 성격에 맞춰 고르면 됩니다. 일회성이고 민감하지 않은 데이터라면 웹 변환기가 가장 빠릅니다. 같은 작업을 반복하거나 자동화가 필요하면 파이썬이나 자바스크립트 코드가 답입니다. 회사 내부 데이터처럼 외부 유출이 곤란한 경우에는 엑셀 파워 쿼리나 로컬에서 돌아가는 코드를 쓰는 편이 안전합니다.
지금 다루는 JSON이 단순한 배열이라면 웹 도구로 1분 안에 끝내고, 중첩이 복잡하거나 양이 많다면 pandas 코드를 한 번 짜 두세요. 두 가지만 익혀 두면 형식 때문에 막히는 일은 거의 없어집니다.