변환하기 좋은 JSON 구조
CSV로 바꾸기 가장 쉬운 형태는 같은 키를 가진 객체의 배열입니다. 예를 들어 [{"name":"Baro","score":95}]처럼 각 객체가 한 행이 되고 키가 열 이름이 됩니다.
객체마다 키가 다르면 빈 셀이 생길 수 있습니다. 변환 전에 필수 키와 값의 자료형을 가능한 한 통일하세요.
CSV 헤더와 인용규칙
CSV 첫 행은 보통 열 이름입니다. 값에 쉼표, 큰따옴표 또는 줄바꿈이 있으면 큰따옴표로 감싸고 값 안의 큰따옴표는 두 번 써야 합니다.
단순히 문자열을 쉼표로 나누면 주소나 문장 속 쉼표 때문에 열이 밀릴 수 있으므로 CSV 파서를 사용하는 것이 안전합니다.
- 첫 행: 열 이름
- 쉼표·줄바꿈 포함 값: 큰따옴표로 감싸기
- 값 안 큰따옴표: 두 번 표기
중첩 객체와 배열 처리
CSV 한 셀은 계층구조를 직접 표현하지 못합니다. JSON 안의 객체나 배열은 한 셀의 JSON 문자열로 보존하거나 필요한 필드만 평탄화해야 합니다.
다시 JSON으로 복원할 계획이라면 어떤 열이 숫자·불리언·중첩 JSON인지 별도 규칙을 남기세요. CSV 값은 변환 과정에서 문자열로 해석될 수 있습니다.
엑셀에서 열기 전 확인할 것
주민번호·우편번호·상품코드처럼 앞자리 0이 중요한 값은 스프레드시트가 숫자로 자동변환할 수 있습니다. 긴 숫자는 지수표기로 바뀔 수도 있습니다.
민감정보가 포함된 원문은 외부 변환 사이트에 업로드하지 말고 로컬 또는 브라우저 처리 여부를 확인하세요. 변환 후에는 행 수, 헤더 수와 대표 샘플을 원본과 대조하세요.
변환 전 데이터 구조와 인코딩 확인
JSON이 객체 하나인지 객체 배열인지 확인하고 CSV의 한 행으로 만들 단위를 정하세요. 같은 키를 가진 평평한 객체 배열이 가장 안정적이며, 객체마다 키가 다르면 전체 키의 합을 헤더로 만들지 누락키를 오류로 볼지 결정해야 합니다. 숫자·불리언·null·빈 문자열을 변환 뒤 어떤 값으로 표현할지도 규칙을 남깁니다.
한글이 포함된 CSV는 UTF-8 인코딩을 기본으로 하되 사용하는 스프레드시트가 BOM을 요구하는지 확인하세요. 구분자가 쉼표인지 세미콜론인지, 소수점 기호와 날짜형식이 지역설정에 따라 달라지는지도 중요합니다. 원본은 복사해 보관하고 민감정보는 외부로 전송하지 않도록 처리방식을 확인합니다.
- JSON의 행 단위와 필수키 정의
- null·빈 문자열·자료형 변환규칙 작성
- UTF-8·구분자·지역설정 확인
중첩 객체와 배열을 평탄화하는 방법
user.address.city 같은 중첩 객체는 점 표기 열로 평탄화하거나 address 전체를 JSON 문자열로 한 셀에 보존할 수 있습니다. items처럼 길이가 다른 배열은 한 셀의 JSON으로 둘지, 별도의 상세 CSV로 분리해 공통 ID로 연결할지 정합니다. 배열 원소를 열로 무한히 펼치면 길이가 달라질 때 구조가 깨질 수 있습니다.
다시 JSON으로 복원해야 한다면 평탄화 구분자, 배열 처리와 자료형 정보를 함께 저장하세요. 점이 원래 키 이름에 들어 있다면 충돌할 수 있으므로 이스케이프 규칙이 필요합니다. 부모 CSV와 자식 CSV를 나누는 경우 고유 ID가 비어 있거나 중복되지 않는지 검증해야 관계를 잃지 않습니다.
- 중첩객체는 점 표기 또는 JSON 셀로 보존
- 가변 배열은 상세 테이블 분리 검토
- 왕복변환용 자료형·구분자·ID 규칙 유지
쉼표·따옴표·줄바꿈과 엑셀 자동변환 방지
CSV 값에 쉼표, 큰따옴표 또는 줄바꿈이 있으면 값을 큰따옴표로 감싸고 내부 큰따옴표는 두 번 표기해야 합니다. 단순 split(',')은 주소와 설명문을 여러 열로 잘못 나눕니다. 내보낸 파일을 다시 읽어 원본 문자열이 복원되는지 대표행으로 확인하세요.
우편번호·상품코드의 앞자리 0, 16자리 이상 숫자, 1-2 같은 값은 스프레드시트가 숫자·지수·날짜로 자동변환할 수 있습니다. CSV 자체에는 강한 자료형이 없으므로 가져오기 기능에서 해당 열을 텍스트로 지정하거나 XLSX 같은 형식을 고려하세요. 수식으로 시작하는 외부 데이터는 CSV 주입 위험이 있어 신뢰할 수 없는 값의 첫 문자를 안전하게 처리해야 합니다.
- 표준 CSV 인용규칙 사용
- 코드·긴 숫자·날짜형 값은 텍스트로 가져오기
- 신뢰할 수 없는 수식형 값의 CSV 주입 방지
행 수·헤더·왕복변환 최종 검증
변환 전후 전체 행 수, 고유키 수, 헤더 수, null 개수와 숫자 합계를 비교하세요. 첫 행만 보는 대신 처음·중간·마지막과 특수문자가 있는 샘플을 검사합니다. 대용량 파일은 일부가 잘리거나 브라우저 메모리를 많이 쓸 수 있으므로 파일 크기와 처리한 행 수를 기록하고 중요한 작업은 작은 복사본으로 먼저 시험합니다.
가능하면 JSON→CSV→JSON으로 왕복한 결과를 원본의 정렬된 구조와 비교하세요. CSV는 자료형과 중첩정보를 잃을 수 있어 완전 동일하지 않을 수 있지만 어떤 차이를 허용했는지 문서화해야 합니다. 최종파일 이름에 날짜·버전·인코딩을 표시하고 원본과 결과를 분리하며, 운영 데이터 가져오기는 백업과 검증환경을 거쳐 진행합니다.
운영 시스템에 가져올 때는 새 레코드 추가와 기존 레코드 수정의 기준키를 명확히 정하세요. 고유키가 비어 있거나 중복된 CSV를 바로 반영하면 중복 생성이나 잘못된 덮어쓰기가 생길 수 있으므로 검증보고서를 먼저 확인합니다.
- 행·키·헤더·null·합계 비교
- 특수문자 포함 대표행 검수
- 운영 반영 전 백업과 시험 가져오기