본문 바로가기
Artificial Intelligence/60. Python

[PYTHON] JSON 파싱 완벽 이해와 실전 예제

by Papa Martino V 2025. 7. 23.
728x90

JSON 파싱 완벽 이해와 실전 예제
JSON 파싱

 

웹 개발, 데이터 분석, 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/
728x90