
웹 개발, 데이터 분석, API 활용에서 빠질 수 없는 데이터 형식이 바로 JSON(JavaScript Object Notation)입니다. Python은 내장된 json 모듈을 통해 복잡한 JSON 구조도 쉽게 파싱하고 활용할 수 있습니다. 이 글에서는 Python을 사용한 JSON 파싱의 원리, 기초 문법, 다양한 실전 활용 예제, 그리고 에러 처리까지 단계별로 소개합니다.
JSON이란 무엇인가?
JSON은 데이터를 키-값(key-value) 쌍으로 표현하는 텍스트 기반 포맷입니다. 웹 API, 설정 파일, 데이터 전송 등에 광범위하게 활용됩니다. 구조가 단순하고 인간이 읽기 쉬우며, 거의 모든 언어에서 쉽게 처리할 수 있어 사실상 표준 데이터 형식이 되었습니다.
기본 JSON 구조 예시
{
"name": "홍길동",
"age": 30,
"skills": ["Python", "Django"],
"is_active": true
}
Python에서는 JSON 객체가 딕셔너리(dict)로 변환되어 사용됩니다.
Python에서 JSON 파싱하는 방법
| 함수 | 설명 | 사용 예 |
|---|---|---|
| json.loads() | JSON 문자열 → Python 객체 | 문자열에서 데이터 읽기 |
| json.load() | JSON 파일 → Python 객체 | 파일에서 직접 로딩 |
| json.dumps() | Python 객체 → JSON 문자열 | 문자열로 저장하거나 API 응답 생성 |
| json.dump() | Python 객체 → 파일 저장(JSON 포맷) | 파일로 저장할 때 사용 |
1. JSON 문자열 파싱
import json
json_data = '{"name": "홍길동", "age": 30}'
parsed = json.loads(json_data)
print(parsed["name"]) # 홍길동
print(parsed["age"]) # 30
문자열로 되어 있는 JSON 데이터를 딕셔너리처럼 사용할 수 있습니다.
2. JSON 파일 읽기
import json
with open("data.json", "r", encoding="utf-8") as f:
data = json.load(f)
print(data["skills"])
실제 서비스에서는 외부 JSON 파일을 직접 읽어 처리하는 경우가 많습니다.
3. Python 객체를 JSON으로 변환
import json
user = {
"username": "admin",
"is_active": True,
"roles": ["editor", "viewer"]
}
json_str = json.dumps(user, indent=2, ensure_ascii=False)
print(json_str)
indent는 보기 좋게 줄바꿈을 해주며, ensure_ascii=False를 설정하면 한글도 깨지지 않고 출력됩니다.
복잡한 JSON 구조 처리
중첩 구조의 JSON도 Python에서는 단계별로 쉽게 접근할 수 있습니다.
json_data = '''
{
"user": {
"name": "김철수",
"profile": {
"email": "kim@example.com",
"age": 27
}
}
}
'''
data = json.loads(json_data)
print(data["user"]["profile"]["email"]) # kim@example.com
실전 활용: API 응답 파싱 예제
import requests
import json
response = requests.get("https://jsonplaceholder.typicode.com/users/1")
user = response.json()
print("이름:", user["name"])
print("이메일:", user["email"])
많은 외부 API는 JSON 포맷으로 응답합니다. Python의 .json() 메서드를 사용하면 바로 딕셔너리로 변환됩니다.
JSON 파싱 중 자주 발생하는 에러와 해결법
| 에러 메시지 | 원인 | 해결 방법 |
|---|---|---|
| JSONDecodeError | 문자열에 문법 오류 | JSONLint로 형식 검증 |
| UnicodeDecodeError | 인코딩 문제 | 파일 열 때 encoding='utf-8' 명시 |
| KeyError | 존재하지 않는 키 접근 | get() 메서드로 접근하거나 키 존재 여부 확인 |
JSON과 Python 객체 매핑 비교
| JSON 형식 | Python 객체 |
|---|---|
| object | dict |
| array | list |
| string | str |
| number (int) | int |
| number (float) | float |
| true / false | True / False |
| null | None |
고급 JSON 활용 팁
- 데이터 정렬:
sort_keys=True로 키 기준 정렬 가능 - 중첩 데이터 필터링:
jmespath같은 라이브러리를 활용 - JSON 파일 압축:
gzip과 함께 사용하여 저장 용량 절약 - 유효성 검사:
jsonschema로 스키마 기반 검증 가능
결론
Python은 JSON 데이터를 매우 효율적으로 다룰 수 있도록 표준 모듈(json)을 제공합니다. 단순한 구조부터 복잡한 API 응답까지, JSON은 현대 소프트웨어 개발에서 핵심적인 데이터 형식입니다. 이 글을 통해 JSON 구조와 Python의 파싱 원리를 완전히 이해하고, 다양한 실무 프로젝트에 바로 적용할 수 있는 실력을 갖추시길 바랍니다.
출처
- Python 공식 문서: https://docs.python.org/3/library/json.html
- JSON 공식 사이트: https://www.json.org/
- Real Python - Working with JSON: https://realpython.com/python-json/
- JSONPlaceholder API: https://jsonplaceholder.typicode.com/
'Artificial Intelligence > 60. Python' 카테고리의 다른 글
| [PYTHON] threading vs asyncio : 진짜 효율적인 동시성은 무엇인가? (0) | 2025.07.24 |
|---|---|
| [PYTHON] SQLite3 완전 정복 : 기초부터 실전까지 (0) | 2025.07.24 |
| [PYTHON] Jupyter Notebook 설치 및 실행 완벽 가이드 (0) | 2025.07.23 |
| [PYTHON] requests로 배우는 실전 API 호출 완벽 가이드 (0) | 2025.07.23 |
| [PYTHON] Python으로 배우는 실전 웹 스크래핑 완벽 가이드 (0) | 2025.07.23 |