JSON과 CSV의 차이는 무엇인가요?
JSON은 중첩 구조와 타입 정보를 유지하기 좋고, CSV는 표 형태라 엑셀과 분석 도구에서 다루기 쉽습니다. API 연동은 JSON, 시트 작업과 대량 검토는 CSV가 더 적합한 경우가 많습니다.
JSON과 CSV를 상호 변환합니다. 텍스트를 붙여넣으면 즉시 변환됩니다.
JSON은 중첩 구조와 타입 정보를 유지하기 좋고, CSV는 표 형태라 엑셀과 분석 도구에서 다루기 쉽습니다. API 연동은 JSON, 시트 작업과 대량 검토는 CSV가 더 적합한 경우가 많습니다.
가능은 하지만 CSV는 평면 구조라서 중첩 객체와 배열은 문자열로 풀리거나 평탄화가 필요합니다. 데이터 구조가 깊을수록 키 설계와 후처리 기준을 먼저 정하는 것이 좋습니다.
엑셀이 UTF-8을 자동으로 잘못 해석하면 한글이 깨질 수 있습니다. CSV 앞에 BOM을 붙이거나 가져오기 메뉴에서 인코딩을 지정하면 대부분 해결됩니다.
JSON은 객체 안에 또 다른 객체를 중첩할 수 있지만, CSV는 단일 행과 열로만 데이터를 표현합니다. 중첩 구조는 점 표기법으로 평탄화(user.address.city)하거나, 배열은 쉼표로 이어 붙인 문자열로 변환합니다. 이 구조 차이 때문에 중첩이 깊을수록 변환 후 데이터 검토가 필요합니다.
JSON과 CSV는 데이터를 저장하고 교환하는 데 가장 널리 쓰이는 두 가지 텍스트 형식입니다. 용도와 특성이 꽤 다르기 때문에, 차이점을 정확히 알아두면 상황에 맞는 포맷을 선택하는 데 도움이 됩니다.
| 특성 | JSON | CSV |
|---|---|---|
| 데이터 구조 | 중첩 가능 (트리 구조) | 평면 (표 형태) |
| 데이터 타입 | 문자열, 숫자, 불리언, null, 배열, 객체 | 모든 값이 문자열 |
| 파일 용량 | 상대적으로 큼 (키 이름 반복) | 상대적으로 작음 |
| 가독성 | 중간 (개발자 친화적) | 높음 (비개발자도 이해 가능) |
| 주요 용도 | API 통신, 설정 파일 | 스프레드시트, 데이터 분석 |
간단히 말하면, JSON은 프로그래밍 세계의 표준 데이터 교환 형식이고, CSV는 비개발자도 엑셀에서 바로 열어볼 수 있는 직관적인 형식입니다. 개발팀과 기획팀 사이에서 데이터를 주고받아야 할 때, 이 두 형식 간의 변환이 가장 빈번하게 일어납니다.
JSON을 CSV로 변환하는 과정에서 데이터 구조의 차이 때문에 몇 가지 주의해야 할 사항이 있습니다.
중첩 객체 평탄화가 가장 큰 이슈입니다. JSON은 객체 안에 또 다른 객체를 넣을 수 있지만, CSV는 단일 행과 열로만 데이터를 표현합니다. 예를 들어 {"user": {"name": "홍길동", "address": {"city": "서울"}}} 같은 구조는 CSV에서 "user.name", "user.address.city"처럼 점(dot) 표기법으로 펼쳐야 합니다.
배열 값 처리도 고려해야 합니다. JSON에서 {"tags": ["react", "vue", "angular"]}처럼 배열이 들어있는 경우, CSV의 한 셀에 어떻게 표현할지 결정해야 합니다. 일반적으로 쉼표 구분 문자열로 합치거나, JSON 문자열 그대로 셀에 넣는 방식을 사용합니다.
null과 undefined 처리에도 주의가 필요합니다. JSON에서 null은 명시적으로 "값이 없음"을 나타내지만, CSV에서는 빈 셀로 표현됩니다. 원래 빈 문자열("")이었던 값과 null이었던 값이 CSV에서는 구분이 안 되기 때문에, 역변환할 때 데이터 타입이 달라질 수 있습니다.
쉼표가 포함된 값의 이스케이프는 반드시 처리해야 합니다. "서울시 강남구, 역삼동"처럼 값 안에 쉼표가 있으면, 큰따옴표로 전체 값을 감싸야 합니다. 그렇지 않으면 쉼표 위치에서 컬럼이 분리되어 데이터가 엉켜버립니다. 이 도구에서는 이런 이스케이프 처리를 자동으로 해줍니다.
CSV를 JSON으로 변환할 때도 몇 가지 알아둘 점이 있습니다.
헤더 행이 키값이 됩니다. CSV의 첫 번째 줄은 각 컬럼의 이름(키)으로 사용됩니다. 따라서 헤더에 특수문자나 공백이 포함되어 있으면 JSON 키로 그대로 들어가므로, 미리 정리하는 것이 좋습니다. 예를 들어 "상품 이름"보다는 "productName" 같은 형태가 API 연동에 더 적합합니다.
데이터 타입 자동 추론이 필요합니다. CSV에서는 모든 값이 문자열이지만, JSON에서는 숫자, 불리언 등의 타입을 구분합니다. "30"이 숫자 30인지, 문자열 "30"인지는 맥락에 따라 판단해야 합니다. 이 도구에서는 숫자처럼 보이는 값은 자동으로 숫자 타입으로 변환합니다.
빈 셀 처리 방식도 중요합니다. CSV에서 빈 셀은 JSON에서 빈 문자열("")로 변환됩니다. API에서 null을 기대하는 필드가 있다면 변환 후 수동으로 확인하는 것이 안전합니다.
JSON-CSV 변환은 다양한 실무 상황에서 매일같이 사용됩니다. 대표적인 사례들을 소개합니다.
개발팀과 비개발팀 사이에서 데이터를 주고받는 일이 잦다면, 이 도구를 북마크해두는 것을 추천합니다. 매번 파이썬 스크립트를 짜거나 npm 패키지를 설치할 필요 없이, 브라우저에서 붙여넣기 한 번이면 바로 변환됩니다.
한글이 포함된 CSV 파일을 엑셀에서 열었을 때 글자가 깨져 보이는 문제는 정말 흔한 이슈입니다. 원인은 인코딩에 있습니다.
대부분의 현대 시스템은 UTF-8 인코딩을 사용하지만, 마이크로소프트 엑셀은 CSV 파일을 열 때 기본적으로 ANSI(Windows의 경우) 또는 시스템 기본 인코딩을 적용합니다. UTF-8로 저장된 한글 CSV를 엑셀이 다른 인코딩으로 해석하면 글자가 깨지는 것이죠.
가장 확실한 해결 방법은 CSV 파일 맨 앞에 BOM(Byte Order Mark)을 추가하는 것입니다. BOM은 파일의 시작 부분에 붙는 특수한 바이트 시퀀스(EF BB BF)로, 엑셀에게 "이 파일은 UTF-8입니다"라고 알려주는 역할을 합니다. BOM이 있으면 엑셀이 자동으로 UTF-8로 인식하여 한글이 정상적으로 표시됩니다.
참고로 과거에는 한국에서 EUC-KR 인코딩이 널리 쓰였고, 일부 레거시 시스템에서는 여전히 EUC-KR을 사용합니다. 오래된 시스템과 데이터를 교환할 때는 인코딩을 확인하고, 필요하면 UTF-8로 변환한 뒤 작업하는 것이 안전합니다. 모든 처리가 브라우저에서 이루어지며 서버로 전송되지 않습니다.