본문 바로가기
프로그래밍언어/파이썬[중급]

[파이썬][중급] Chapter44. JSON과 pickle의 차이점

by about_IT 2025. 5. 24.
728x90

파이썬에서는 객체를 저장하거나 전송하기 위해 picklejson 두 가지 주요 직렬화 방법을 사용할 수 있습니다. 두 방식 모두 데이터를 텍스트나 바이너리 형태로 변환할 수 있지만, 용도와 특성이 서로 다릅니다.


● JSON의 특징

  • 텍스트 기반 (UTF-8 인코딩)
  • 사람이 읽기 쉬움
  • 언어 독립적: JavaScript, Java, C++, R 등 다양한 언어에서 사용 가능
  • 기본 자료형만 지원 (list, dict, int, float, str, bool, None)
import json

data = {"name": "Alice", "age": 30}
with open("data.json", "w", encoding="utf-8") as f:
    json.dump(data, f)

JSON은 웹 통신, 설정 파일 등 범용 데이터 교환 포맷으로 적합합니다.


● pickle의 특징

  • 바이너리 포맷
  • 사람이 읽을 수 없음
  • 파이썬 전용 (다른 언어와 호환되지 않음)
  • 모든 파이썬 객체 직렬화 가능 (클래스, 함수, 사용자 객체 등)
import pickle

with open("data.pkl", "wb") as f:
    pickle.dump(data, f)

pickle은 머신러닝 모델 저장, 캐시, 임시 데이터 저장 등에 적합합니다.


● 비교 정리

항목JSONpickle
포맷텍스트바이너리
호환성언어 독립파이썬 전용
가독성사람이 읽을 수 있음읽을 수 없음
지원 타입기본 타입만모든 객체
보안비교적 안전load 사용 시 보안 위험

● 마무리

JSON은 범용 데이터 교환에 적합하고, pickle은 파이썬 내부에서만 사용하는 객체 저장에 적합합니다. 사용 목적에 따라 적절한 포맷을 선택하고, 특히 pickle을 사용할 때는 보안에 주의해야 합니다.

728x90