[Python] JSON 파일을 CSV로 변환

2025. 6. 1. 01:56·개발 (Development)/Python

데이터 분석이나 시스템 연동 작업을 하다 보면 JSON 데이터를 CSV 형식으로 변환해야 할 때가 많습니다. Python에서는 이를 간단한 코드로 처리할 수 있습니다. 이번 글에서는 JSON 파일을 CSV로 변환하는 코드를 소개하고, 주요 개념과 사용 방법까지 정리해 보았습니다.

JSON 데이터를 CSV로 변환하는 이유

  • CSV는 엑셀 등 다양한 도구에서 쉽게 다룰 수 있는 형식입니다.
  • 반면 JSON은 계층 구조로 되어 있어 사람이 직접 보기엔 불편할 수 있습니다.
  • Python을 이용하면 간단히 JSON 파일을 읽고, CSV 파일로 저장할 수 있습니다.

Python 코드 예시

아래 코드는 JSON 파일을 읽어서, 그 내용을 CSV 형식으로 저장해주는 간단한 스크립트입니다.

import json
import csv

# JSON 파일 경로
json_file_path = 'input.json'
csv_file_path = 'output.csv'

# JSON 파일 읽기
with open(json_file_path, 'r', encoding='utf-8') as f:
    json_data = json.load(f)

# JSON 데이터가 리스트 형태인지 확인
if isinstance(json_data, dict):
    json_data = [json_data]  # 단일 객체일 경우 리스트로 감싸기

# CSV 파일로 저장
with open(csv_file_path, 'w', newline='', encoding='utf-8') as csvfile:
    # 필드 이름 추출 (첫 번째 객체 기준)
    fieldnames = json_data[0].keys()
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()       # 컬럼명 작성
    writer.writerows(json_data)  # 데이터 작성

print("JSON 파일이 CSV로 변환되었습니다.")

코드 설명

  • json.load(f): JSON 파일을 파이썬 객체로 로드합니다.
  • isinstance(json_data, dict): JSON이 단일 객체라면 리스트로 감싸주어 처리할 수 있도록 합니다.
  • csv.DictWriter: key-value 형식의 데이터를 CSV로 저장할 수 있게 해줍니다.
  • writeheader(): CSV 파일의 첫 줄에 컬럼명을 작성합니다.
  • writerows(): JSON 리스트의 각 항목을 CSV의 행으로 기록합니다.

사용 방법

  1. input.json 파일을 프로젝트 폴더에 준비합니다.
  2. 위 코드를 .py 파일로 저장하고 실행합니다.
  3. 실행 후 output.csv 파일이 생성됩니다.
  4. 파일을 열어 정상적으로 변환되었는지 확인합니다.

유의사항

  • JSON 데이터가 리스트 형식이 아닐 경우({}만 있는 경우) 리스트로 감싸서 처리해야 합니다.
  • 중첩된 구조의 JSON(예: { "user": { "name": "Alice" } })는 위 코드로는 바로 CSV 변환이 어렵습니다. 이 경우 flatten 처리가 필요합니다.
반응형

'개발 (Development) > Python' 카테고리의 다른 글

[Python] Pandas DataFrame에서 조건에 따라 행 삭제 및 특정 데이터 추출하는 방법 정리  (2) 2025.07.20
[Python] pandas로 DataFrame 비교하여 특정 값 제거하는 방법  (0) 2025.07.20
[Python] 배열을 1000개 단위로 나누어 처리하는 방법  (0) 2025.05.18
[Python] Pandas DataFrame에서 값이 저장되지 않는 이유와 해결 방법  (0) 2025.05.18
[Python] Pandas DataFrame에서 for문을 이용해 특정 컬럼 값 변경하기  (0) 2025.05.18
'개발 (Development)/Python' 카테고리의 다른 글
  • [Python] Pandas DataFrame에서 조건에 따라 행 삭제 및 특정 데이터 추출하는 방법 정리
  • [Python] pandas로 DataFrame 비교하여 특정 값 제거하는 방법
  • [Python] 배열을 1000개 단위로 나누어 처리하는 방법
  • [Python] Pandas DataFrame에서 값이 저장되지 않는 이유와 해결 방법
LoopThinker
LoopThinker
모르는 것을 알아가고, 아는 것을 더 깊게 파고드는 공간
  • LoopThinker
    CodeMemoir
    LoopThinker
  • 전체
    오늘
    어제
    • 분류 전체보기 (216) N
      • 개발 (Development) (151) N
        • Algorithm (1)
        • Angular (1)
        • AWS (4)
        • DeepSeek (2)
        • Docker (7)
        • Git (3)
        • Java (30)
        • JavaScript (4)
        • Kafka (5)
        • Kubernetes (4)
        • Linux (6)
        • PostgreSQL (37) N
        • Python (26)
        • React (3)
        • TypeScript (3)
        • Vue.js (5)
        • General (10)
      • 데이터 분석 (Data Analysis) (1)
      • 알고리즘 문제 풀이 (Problem Solving.. (27)
      • 자격증 (Certifications) (24)
        • ADsP (14)
        • 정보처리기사 (4)
        • Linux Master (5)
        • SQLD (1)
      • 기술 동향 (Tech Trends) (10)
      • 기타 (Others) (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    JSON
    오답노트
    pandas
    Kafka
    Linux
    timescaledb
    java
    백준알고리즘
    리눅스 마스터 2급
    리눅스 마스터 2급 2차
    typescript
    Kubernetes
    JPA
    백준온라인저지
    AWS
    python
    백준자바
    PostgreSQL
    Linux master
    javascript
    Vue.js
    docker
    MyBatis
    deepseek
    데이터분석
    백준
    자바
    DevOps
    springboot
    ADsP
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
LoopThinker
[Python] JSON 파일을 CSV로 변환
상단으로

티스토리툴바