핵심 요약

JSON
  • 유연한 다차원 계층 트리 구조
  • 백엔드 API 통신에 주로 사용
VS
CSV
  • 가벼운 2차원 평면 테이블 구조
  • 데이터 분석, 머신러닝 전처리, 스프레드시트 관리에 필수

현대 소프트웨어 아키텍처와 데이터 엔지니어링 파이프라인에서 JSON과 CSV는 가장 널리 쓰이는 데이터 직렬화 포맷이다. 유연한 계층 구조를 갖춘 JSON은 백엔드 API 통신에 주로 사용되는 반면, 가벼운 2차원 표 형식의 CSV는 데이터 분석, 머신러닝 전처리, 스프레드시트 관리에 필수적이다. JSON 데이터를 CSV로 변환하는 작업의 핵심은 복잡하게 중첩된 다차원 객체를 단일 평면 테이블로 사상(Mapping)하는 데이터 평탄화(Flattening) 로직이다. 이 변환 원리를 명확히 이해하면 데이터 전처리 시 발생하는 열 밀림이나 정보 누락을 원천적으로 방지할 수 있다.

데이터 매핑 및 평탄화 알고리즘

중첩된 JSON 객체를 2차원 테이블 헤더로 전개할 때는 점 표기법 평탄화(Dot-Notation Recursive Flattening) 알고리즘을 적용한다. 이는 JSON 표준(RFC 8259)의 비선형 트리 구조를 CSV 표준(RFC 4180)의 선형 구조로 바꾸는 핵심 규칙이다.

  • 객체 분해 및 병합: metrics 하위의 users 하위에 active라는 값이 존재한다면, 계층을 나타내는 점(.)을 사용해 metrics.users.active라는 단일 컬럼으로 병합한다.
  • 중첩 배열 처리: 배열 내부에 객체가 연속될 경우 배열의 인덱스를 점 표기법에 포함시키거나 별도의 행(Row)으로 확장하여 차원 중첩을 해소한다.
  • 자동 이스케이프 및 쿼팅: 데이터 필드 내부에 쉼표(,), 개행 문자(\n), 큰따옴표(")가 혼재된 경우 유한 상태 기계(Finite State Machine) 기반 파서를 통해 해당 값을 큰따옴표로 안전하게 감싸 구조 왜곡을 막는다.

실제 JSON CSV 변환 예시

재귀적 평탄화 로직이 실제로 데이터를 어떻게 가공하는지 구체적인 코드 구조로 살펴본다.

[
  {
    "id": 101,
    "user": {
      "name": "홍길동",
      "location": "서울, 대한민국"
    },
    "metrics": {
      "logins": 15
    }
  }
]

위의 JSON 코드는 3단계 깊이로 중첩된 객체와 내부에 쉼표를 포함한 문자열(서울, 대한민국)을 포함한다. 이를 CSV로 변환한 결과는 다음과 같다.

"id","user.name","user.location","metrics.logins"
"101","홍길동","서울, 대한민국","15"

결과를 살펴보면 계층 구조가 모두 점을 기준으로 한 열로 펼쳐졌고, 내부 쉼표가 들어있는 문자열은 큰따옴표로 둘러싸여 분리 기호와 섞이지 않도록 처리되었다.

변환 결과 검증 방법

생성된 CSV 데이터가 원본의 무결성을 유지하고 있는지 확인하는 과정은 중요하다. 즉각적인 검증을 위해 인터랙티브 데이터 그리드 화면을 활용하여 다음 세 가지 항목을 점검한다.

  1. 열 밀림 현상 확인: 특정 행의 데이터 개수가 최상단 헤더 열 개수와 일치하는지 확인한다. 쉼표가 제대로 이스케이프되지 않으면 데이터가 우측으로 밀리는 치명적 오류가 발생한다.
  2. 계층 누락 점검: 점 표기법으로 나열된 헤더 이름이 원본 JSON 객체의 깊이(Depth)와 맞는지 대조하여 잘린 데이터가 없는지 살핀다.
  3. 데이터 타입 보존 여부: 숫자형 데이터와 문자열형 데이터가 원래 의도대로 남아있는지 확인한다. 식별자 번호가 지수 형태로 바뀌거나 앞자리의 0이 사라지지 않도록 주의 깊게 살펴야 한다.

무손실 변환 실전 가이드

무손실 변환 4단계 절차

  1. 1
    1단계: 원본 JSON 배열화

    단일 딕셔너리 구조를 대괄호([])로 감싸 다중 행 처리에 유리한 배열로 전환

  2. 2
    2단계: 보안 변환 환경 구성

    브라우저 메모리 내에서만 동작하는 도구로 데이터 외부 유출 방지

  3. 3
    3단계: 실시간 프리뷰 검수

    인터랙티브 그리드에서 전체 행 개수와 원본 항목 수를 대조하여 누락 점검

  4. 4
    4단계: 파일 저장 및 연동

    .csv 포맷으로 저장 후 판다스 데이터프레임 등 분석 파이프라인에 연동

대규모 데이터를 다루는 개발자와 데이터 분석가가 시간 손실 없이 정확하게 양방향 변환을 수행하는 단계는 다음과 같다.

1단계: 원본 JSON 데이터 배열화

변환을 시작하기 전, 원본 JSON 문서를 확인한다. 루트 객체가 하나뿐인 딕셔너리 구조라면 대괄호([])로 감싸 배열 형태로 만들어 준다. CSV는 기본적으로 다중 행을 상정하는 포맷이므로 배열 형태의 입력이 구조적 일관성을 유지하는 데 가장 유리하다.

2단계: 보안 걱정 없는 변환 환경 구성

입력 창에 준비된 JSON 코드를 직접 붙여넣거나 .json 파일을 드래그하여 드롭한다. 이때 서버 전송 로직이 섞인 도구를 쓰면 민감한 사용자 정보가 유출될 수 있다. 100% 브라우저 메모리 안에서만 동작하는 JSON ↔ CSV 변환기를 활용하면 외부 통신 없이 즉각적인 파싱이 이루어져 사내 보안 데이터를 안전하게 다룰 수 있다.

3단계: 그리드 테이블 실시간 프리뷰 검수

변환 버튼을 누른 뒤 즉시 제공되는 인터랙티브 데이터 그리드 테이블을 살펴본다. 자동 평탄화된 컬럼 헤더가 너무 많아 화면 바깥으로 넘어간다면, 원본 JSON 설계가 지나치게 중첩되었다는 신호일 수 있다.

실무 팁을 더하자면, 결과물을 다운로드하기 전 테이블 프리뷰 단계에서 전체 행 개수와 원본 데이터의 항목 수를 먼저 비교하는 것이 좋다. 개수가 정확히 일치한다면 누락 없는 완전한 변환이 이루어졌음을 1차적으로 확인할 수 있어 검수 시간을 크게 단축한다.

4단계: 파일 저장 및 분석 파이프라인 연동

검증이 끝난 데이터를 .csv 포맷으로 시스템에 저장한다. 이후 엑셀로 열어보거나 파이썬 판다스(Pandas) 데이터프레임으로 불러들여 사분위수 계산 방법과 IQR, 이상치 판단 기준을 적용하는 등의 추가적인 기계학습 전처리 및 통계 분석을 이어나간다.

변환 시 자주 헷갈리는 부분

변환 시 주요 주의사항
  • 배열 인코딩: 단순 숫자 배열은 변환 로직에 따라 단일 셀 문자열로 묶이거나 다중 열로 분리될 수 있음
  • 한글 깨짐 현상: 스프레드시트 열기 시 깨짐 발생 시 UTF-8 BOM 서명 확인 및 텍스트 마법사로 불러오기 권장

실무자들이 JSON과 CSV를 넘나들며 변환할 때 가장 자주 겪는 문제는 배열 인코딩과 한글 깨짐 현상이다. 원본 데이터 내부에 단순한 숫자 배열(예: [10, 20, 30])이 있을 때, 어떤 환경은 이를 단일 문자열 값으로 묶어서 셀 하나에 넣고, 다른 환경은 열을 늘려 분리한다. 이는 변환 로직의 설계에 따라 결과가 크게 달라지는 지점이다. 또한 추출한 파일을 스프레드시트로 곧바로 열 때 한글 텍스트나 특수문자가 알아볼 수 없게 깨진다면 UTF-8 BOM 서명 문제가 원인일 확률이 높으므로 인코딩 텍스트 마법사를 거쳐 파일을 불러오는 것이 안전하다.