새 글을 빠르게 보려면?
이 블로그 목록을 북마크하고 홈·도구 허브의 가이드 영역도 확인하세요. 글 읽기에 가입이나 메일 구독이 필요 없습니다.
Python을 사용하여 JSON 데이터를 CSV 형식으로 변환하는 방법을 배우고, 완전한 코드 예제, 중첩된 JSON 처리, 데이터 처리 모범 사례를 포함합니다.
일상적인 데이터 처리에서 JSON 형식 데이터를 CSV 테이블로 변환해야 하는 상황을 자주 마주칩니다. API 데이터 내보내기, 로그 파일 분석, Excel에서 시각화 등이 그 예입니다.
이 글에서는 Python을 사용하여 JSON → CSV 변환을 효율적으로 수행하는 방법을 소개하고, 몇 가지 일반적인 구현 방법을 제시합니다.
| 특징 | JSON | CSV |
|---|---|---|
| 데이터 구조 | 트리형, 중첩 구조 | 평면 테이블 |
| 가독성 | 기계와 인간 모두 읽기 가능 | 인간 친화적, 구조 단순 |
| 일반적인 용도 | Web API, 설정 파일 | Excel, 데이터베이스 가져오기/내보내기 |
| 파일 확장자 | .json | .csv |
API에서 반환된 JSON 데이터를 스프레드시트에서 보거나 분석하려면 CSV로 변환해야 합니다.
Python에는 강력한 json과 csv 표준 라이브러리가 내장되어 있어 추가 종속성 없이 직접 변환을 처리할 수 있습니다.
import json
import csv
# JSON 파일 읽기
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
# CSV 파일을 쓰기용으로 열기
with open('output.csv', 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
# 헤더 쓰기 (첫 번째 요소의 키에서 추출)
header = data[0].keys()
writer.writerow(header)
# 각 행의 데이터 쓰기
for row in data:
writer.writerow(row.values())
print("✅ JSON이 CSV로 성공적으로 변환되었습니다: output.csv")입력 예제:[
{"name": "Alice", "age": 25, "city": "Shanghai"},
{"name": "Bob", "age": 30, "city": "Beijing"}
]출력 결과 (CSV):name,age,city
Alice,25,Shanghai
Bob,30,BeijingJSON에 중첩된 객체나 배열이 포함되어 있다면, 먼저 구조를 "펼쳐야" 합니다.
pandas.json_normalize() 사용import pandas as pd
import json
# 중첩된 JSON 읽기
with open('nested.json', 'r', encoding='utf-8') as f:
data = json.load(f)
# 중첩된 구조를 평면 테이블로 펼치기
df = pd.json_normalize(data)
# CSV로 내보내기
df.to_csv('output.csv', index=False, encoding='utf-8-sig')
print("✅ 중첩된 JSON이 CSV로 성공적으로 변환되었습니다: output.csv")입력 예제:[
{
"user": {"name": "Alice", "id": 101},
"stats": {"score": 98, "level": 3}
},
{
"user": {"name": "Bob", "id": 102},
"stats": {"score": 87, "level": 2}
}
]출력 결과:user.name,user.id,stats.score,stats.level
Alice,101,98,3
Bob,102,87,2✅ 팁: pandas.json_normalize()는 중첩된 필드를 자동으로 평면화하므로 복잡한 JSON에 완벽합니다.원격 API에서 직접 JSON 데이터를 로드할 수도 있습니다:
import requests
import pandas as pd
url = "https://jsonplaceholder.typicode.com/users"
data = requests.get(url).json()
df = pd.json_normalize(data)
df.to_csv('users.csv', index=False, encoding='utf-8-sig')
print("✅ URL에서 JSON을 읽고 CSV로 내보냈습니다")→ CSV를 저장할 때 encoding='utf-8-sig'를 사용하여 Excel에서 중국어가 정상적으로 표시되도록 합니다.
→ JSON이 단일 객체({} 등)인 경우, 수동으로 배열로 감쌀 수 있습니다:
data = [data]3️⃣ Excel로 가져오는 방법은?
→ Excel에서 "데이터" → "텍스트/CSV에서" → 출력 파일을 선택합니다.
명령줄 도구가 필요한 경우:
# json2csv.py
import sys
import pandas as pd
def json_to_csv(input_file, output_file):
df = pd.read_json(input_file)
df.to_csv(output_file, index=False, encoding='utf-8-sig')
print(f"✅ {input_file}이 {output_file}로 변환되었습니다")
if __name__ == "__main__":
if len(sys.argv) != 3:
print("사용법: python json2csv.py input.json output.csv")
else:
json_to_csv(sys.argv[1], sys.argv[2])실행:
python json2csv.py data.json output.csv
| 도구 | 사용 사례 | 장점 |
|---|---|---|
csv + json | 간단한 JSON | 표준 라이브러리, 제로 종속성 |
pandas | 중첩된 JSON, 큰 파일 | 강력한 기능, 배치 처리 지원 |
requests | 네트워크 데이터 | 직접 API 가져오기 |
가끔 변환만 하는 경우, 온라인 도구 👉 JsonWork.com/json-to-csv 를 사용할 수 있습니다.
Python 설치 불필요, 붙여넣기 / 업로드 / 다운로드 지원, 100% 로컬 처리로 더 안전하고 편리합니다.
개발자에게 최고의 JSON 처리 도구를 제공하는 데 전념
더 많은 게시물이 곧 출시됩니다...
블로그로 돌아가기업데이트 확인 방법, 다루는 주제, 제안 방법입니다.
이 블로그 목록을 북마크하고 홈·도구 허브의 가이드 영역도 확인하세요. 글 읽기에 가입이나 메일 구독이 필요 없습니다.
JSON 검증, 포맷, 변환, 디버깅 흐름과 JSON Work 업데이트이며, 사이트의 무료 브라우저 도구와 맞물립니다.
가능합니다. About 페이지나 GitHub로 연락 주세요. 실제 연동·디버깅에 도움이 되는 주제를 우선합니다.