고급 기능
이 문서에서는 복잡한 데이터 변환 시나리오를 위한 JSON → CSV 변환기의 고급 기능을 살펴봅니다.
복잡한 데이터 처리
중첩 객체 평탄화
도구는 점 표기법(dot notation)을 사용해 중첩된 JSON 구조를 자동으로 평탄화합니다.
입력:
[
{
"user": {
"personal": {
"name": "John Doe",
"age": 30
},
"contact": {
"email": "john@example.com",
"phone": "123-456-7890"
}
},
"orders": [
{ "id": 1, "amount": 99.99 },
{ "id": 2, "amount": 149.99 }
]
}
]
출력(평탄화):
user.personal.name,user.personal.age,user.contact.email,user.contact.phone,orders
John Doe,30,john@example.com,123-456-7890,"[{""id"":1,""amount"":99.99},{""id"":2,""amount"":149.99}]"
배열 처리
객체 내부의 배열은 구조를 보존하기 위해 JSON 문자열로 변환됩니다.
입력:
[
{
"name": "Product A",
"tags": ["electronics", "gadget", "portable"],
"specifications": {
"weight": "500g",
"dimensions": [10, 20, 30]
}
}
]
출력:
name,tags,specifications.weight,specifications.dimensions
Product A,"[""electronics"",""gadget"",""portable""]",500g,"[10,20,30]"
고급 설정
사용자 지정 구분자
표준 옵션 외에도 어떤 문자든 구분자로 사용할 수 있습니다.
- 쉼표 (,) - 표준 CSV
- 세미콜론 (;) - 유럽 형식
- 탭 - TSV 형식
- 파이프 (|) - 사용자 지정 구분자
- 사용자 지정 문자 - 임의의 단일 문자
인코딩 고려 사항
UTF-8: 특수 문자를 포함한 국제화 데이터에 가장 적합
name,description
Café,Espresso with café au lait
北京,Capital of China
UTF-16: 16비트 유니코드가 필요한 시스템용
GBK: 중국어 텍스트 처리용
따옴표 이스케이프 전략
표준 이스케이프(권장):
name,description
"Smith, John","He said ""Hello World"" to everyone"
이스케이프 없음(주의해서 사용):
name,description
Smith John,He said Hello World to everyone
데이터 타입 처리
자동 타입 감지
변환기는 출력에서 가능한 한 데이터 타입을 유지합니다.
입력:
[
{ "id": 1, "name": "Product A", "price": 99.99, "active": true, "tags": null },
{ "id": 2, "name": "Product B", "price": 149.99, "active": false, "tags": "electronics" }
]
출력:
id,name,price,active,tags
1,Product A,99.99,true,
2,Product B,149.99,false,electronics
특수 값 처리
- null 값: 빈 문자열로 변환
- undefined 값: 빈 문자열로 변환
- 불리언 값: true/false로 유지
- 숫자: 숫자 값으로 유지
- 문자열: 필요 시 적절히 이스케이프
성능 최적화
대용량 데이터셋 처리
큰 JSON 파일을 다룰 때:
- 배치 처리: 데이터를 청크 단위로 처리
- 메모리 관리: 브라우저 메모리 사용량 모니터링
- 점진적 로딩: 데이터를 단계적으로 로드
브라우저 호환성
이 도구는 모든 최신 브라우저에서 동작합니다.
- Chrome 60+
- Firefox 55+
- Safari 12+
- Edge 79+
통합 예시
API 응답 처리
분석을 위해 API 응답을 CSV로 변환합니다.
// Fetch data from API
fetch("/api/users")
.then((response) => response.json())
.then((data) => {
// Use the converter tool to transform to CSV
const csvData = convertToCSV(data);
downloadCSV(csvData, "users.csv");
});
데이터베이스 내보내기
데이터베이스 쿼리 결과를 변환합니다.
-- SQL query result as JSON
SELECT json_agg(row_to_json(t)) FROM (
SELECT name, email, created_at FROM users
) t;
스프레드시트 연동
CSV를 Excel/Google Sheets로 가져오기:
- 도구로 JSON을 CSV로 변환
- CSV 데이터 복사
- 스프레드시트 앱에 붙여넣기
- 필요하면 “Text to Columns” 사용
오류 처리
검증 오류
잘못된 JSON:
- 대괄호 또는 중괄호 누락
- 끝에 남은 불필요한 쉼표
- 이스케이프되지 않은 따옴표
- 잘못된 이스케이프 시퀀스
데이터 구조 문제:
- 빈 배열
- 일관되지 않은 객체 구조
- 순환 참조(문제 없이 처리됨)
복구 전략
- JSON 검사: 온라인 JSON 검증 도구 사용
- 점진적 테스트: 작은 샘플 데이터로 먼저 테스트
- 데이터 백업: 원본 JSON 파일 보관
- 버전 관리: 데이터 구조 변경 추적
모범 사례
데이터 준비
- JSON 검증: 변환 전에 입력이 유효한지 확인
- 구조 일관성: 객체 구조를 통일
- null 처리: 누락 데이터를 어떻게 표현할지 결정
- 샘플 테스트: 작은 데이터로 출력 검증
출력 최적화
- 올바른 구분자 선택: 대상 시스템 요구 사항에 맞추기
- 인코딩 선택: 적절한 문자 인코딩 사용
- 헤더 관리: 가독성을 위해 헤더 포함
- 따옴표 처리: 복잡한 데이터는 이스케이프 활성화
워크플로 통합
- 자동화: 브라우저 자동화로 배치 처리
- 스케줄링: 정기 내보내기 설정
- 모니터링: 변환 성공률 추적
- 문서화: 변환 사양 유지