JSON-CSV 변환
📋 포맷/변환JSON 배열을 CSV 형식으로 바꾸거나 CSV를 JSON으로 전환합니다.
📊 JSON ↔ CSV 변환기란?
JSON과 CSV를 양방향으로 즉시 변환하는 도구입니다. JSON(JavaScript Object Notation)은 API 통신에, CSV(Comma-Separated Values)는 스프레드시트 작업에 주로 사용됩니다. API 데이터를 엑셀에서 열거나, 엑셀 데이터를 웹 애플리케이션에서 사용할 때 활용하세요.
📋 JSON vs CSV 비교
| 항목 | JSON | CSV |
|---|---|---|
| 구조 | 계층적 (중첩 가능) | 평면적 (표 형태) |
| 타입 지원 | 숫자, 문자열, 불린, null, 배열, 객체 | 모두 문자열 |
| 가독성 | 개발자 친화적 | 엑셀 친화적 |
| 주요 용도 | API, 설정파일 | 데이터 내보내기, 대량 업로드 |
🔄 변환 예시
같은 데이터가 두 포맷에서 어떻게 표현되는지 보면, 어느 쪽이 어떤 작업에 맞는지 바로 감이 옵니다. JSON 배열의 각 객체가 CSV 한 행이 되고, 객체의 키가 헤더 행이 됩니다.
JSON
[
{ "id": 1, "name": "김철수", "dept": "개발", "active": true },
{ "id": 2, "name": "이영희", "dept": "디자인", "active": false }
]CSV
id,name,dept,active 1,김철수,개발,true 2,이영희,디자인,false
값에 쉼표나 줄바꿈이 들어 있으면 자동으로 큰따옴표로 감싸집니다. 예를 들어 주소 서울시 강남구, 101동은"서울시 강남구, 101동"으로 출력됩니다.
⚠️ 변환에서 데이터가 깨지는 경우
두 포맷은 표현력이 다르기 때문에 변환 과정에서 정보가 손실될 수 있습니다. 자주 문제가 되는 것들입니다.
- 중첩 구조는 평면화되지 않음 — 객체 안의 객체는 한 셀에 JSON 문자열로 들어갑니다. 표로 다루려면 미리 구조를 펼쳐야 합니다.
- 엑셀이 앞자리 0을 지움 — 우편번호
06234가6234가 됩니다. 엑셀에서 해당 열을 텍스트 서식으로 지정한 뒤 가져오세요. - 긴 숫자가 지수 표기로 바뀜 — 카드번호나 큰 ID가
1.23E+15처럼 변합니다. 같은 이유로 텍스트 서식이 필요합니다. - 한글이 깨짐 — 엑셀에서 CSV를 그냥 열면 인코딩이 어긋날 수 있습니다. "데이터 → 텍스트 가져오기"에서 UTF-8을 지정하면 해결됩니다.
- null과 빈 문자열 구분이 사라짐 — CSV에서는 둘 다 빈 칸으로 보이므로, 되돌릴 때 의도와 달라질 수 있습니다.
💡 활용 사례
- REST API 응답을 CSV로 변환하여 엑셀에서 분석
- 엑셀 데이터를 JSON으로 변환하여 웹앱에 업로드
- 데이터베이스 덤프를 스프레드시트로 열기
- 테스트 데이터 생성 및 포맷 변환
💡 실무 팁
중첩 구조 JSON은 CSV 변환 전에 flatten으로 평면화하면 한 셀당 한 값으로 깔끔하게 떨어집니다. 반대로 CSV → JSON 변환 시 true/false와 숫자는 자동 타입 추론됩니다.
자주 묻는 질문
중첩된 JSON도 CSV로 변환되나요?▼
중첩된 객체/배열은 JSON 문자열로 직렬화되어 하나의 셀에 들어갑니다. 완전히 평면화하려면 사전에 JSON 구조를 단순화하세요.
CSV의 특수문자(쉼표, 따옴표)는 어떻게 처리되나요?▼
쉼표, 따옴표, 줄바꿈이 포함된 값은 자동으로 큰따옴표로 감싸지고, 내부 따옴표는 이중 따옴표("")로 이스케이프됩니다.
CSV를 JSON으로 변환할 때 타입은 어떻게 결정되나요?▼
true/false는 불린, 숫자 형태는 Number로 자동 변환됩니다. 그 외는 문자열로 유지됩니다.
엑셀에서 열었더니 한글이 깨져요.▼
CSV를 더블클릭으로 열면 인코딩이 어긋날 수 있습니다. 엑셀의 "데이터 → 텍스트/CSV 가져오기"를 사용하고 원본 파일 형식을 UTF-8로 지정하면 정상적으로 표시됩니다.
우편번호 앞의 0이 사라집니다.▼
엑셀이 숫자로 인식해 앞자리 0을 없애기 때문입니다. 가져오기 마법사에서 해당 열을 "텍스트" 서식으로 지정하면 그대로 유지됩니다. 카드번호처럼 긴 숫자가 지수 표기로 바뀌는 것도 같은 이유입니다.
데이터가 서버로 전송되나요?▼
아니요. 변환은 브라우저 안에서만 처리되며 입력한 데이터가 서버로 전송되거나 저장되지 않습니다. 고객 데이터나 사내 자료도 안전하게 변환할 수 있습니다.