Chapter 3-11 직렬화(Serialization) & 역직렬화(Deserialization)

2025. 4. 21. 11:06·Flask

📌 개념 정리

3-11. 직렬화(Serialization) & 역직렬화(Deserialization)

1️⃣ 직렬화 (Serialization)

직렬화는 복잡한 데이터 구조(예: Python 객체)를 JSON과 같은 포맷으로 변환하는 과정입니다. 이 변환은 주로 API 응답으로 데이터를 전송하거나, 파일로 저장할 때 사용됩니다.

User 모델의 직렬화 예시

  1. 모델 인스턴스: Python에서 User 객체가 있다고 가정합니다.
user_instance = User(id=1, username='JohnDoe')
  1. 직렬화 과정: 이 객체를 JSON 포맷으로 변환합니다. 이를 위해 Marshmallow의 스키마를 사용할 수 있습니다.
class UserSchema(Schema):
    id = fields.Int(dump_only=True)
    username = fields.Str()
  1. 결과: 직렬화된 JSON 데이터는 다음과 같습니다.
{
    "id": 1,
    "username": "JohnDoe"
}

2️⃣ 역직렬화 (Deserialization)

역직렬화는 JSON과 같은 포맷의 데이터를 복잡한 데이터 구조(예: Python 객체)로 변환하는 과정입니다. 클라이언트에서 받은 데이터를 서버의 내부 데이터 모델로 변환할 때 사용됩니다.

User 모델의 역직렬화 예시

  1. JSON 데이터: 클라이언트로부터 다음과 같은 JSON 데이터를 받았다고 가정합니다.
{
    "username": "JaneDoe"
}
  1. 역직렬화 과정: 이 JSON 데이터를 User 모델의 인스턴스로 변환합니다.
user_data = {"username": "JaneDoe"}
user_schema = UserSchema()
user_instance = user_schema.load(user_data)
  1. 결과: 역직렬화된 User 인스턴스는 다음과 같습니다.
User(username='JaneDoe')

3️⃣ 사용 케이스

  • API 응답에서 직렬화 사용: 서버가 데이터베이스에서 User 인스턴스를 조회한 후, 이를 JSON 형식으로 클라이언트에게 전송할 때 사용합니다.
  • 클라이언트 요청에서 역직렬화 사용: 클라이언트로부터 JSON 형식의 데이터를 받아, 이를 User 모델 인스턴스로 변환하여 데이터베이스에 저장할 때 사용합니다.

✅ 직렬화와 역직렬화의 중요성

직렬화와 역직렬화는 데이터를 안전하고 효율적으로 전송하고, API 요청 및 응답을 처리하는 데 필수적인 과정입니다. 이 과정을 통해 복잡한 객체 구조를 쉽게 관리하고, 데이터의 유효성을 검증할 수 있습니다.


✅ 마무리 요약 및 복습 포인트

  • 직렬화(Serialization): Python 객체를 JSON 형식으로 변환하는 과정입니다.
  • 역직렬화(Deserialization): JSON 데이터를 Python 객체로 변환하는 과정입니다.
  • API 개발 과정에서 직렬화와 역직렬화는 데이터를 안전하고 효율적으로 주고받을 수 있게 도와줍니다.

 

'Flask' 카테고리의 다른 글

Chapter 4-1 Flask-Migrate란?  (0) 2025.04.22
Chapter 3-12 Flask 개념 정리  (0) 2025.04.21
Chapter 3-10 Schema & Model 차이  (0) 2025.04.21
Chapter 3-9 Flask-SQLAlchemy CRUD 테스트 방법  (0) 2025.04.21
Chapter 3-8 DB 객체 모델 정의 방법 2가지  (0) 2025.04.21
'Flask' 카테고리의 다른 글
  • Chapter 4-1 Flask-Migrate란?
  • Chapter 3-12 Flask 개념 정리
  • Chapter 3-10 Schema & Model 차이
  • Chapter 3-9 Flask-SQLAlchemy CRUD 테스트 방법
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (657) N
      • Python (32)
      • 프로젝트 (43)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11) N
      • 특강 (34) N
      • 기술블로그 (36) N
      • 기술블로그-Fastapi편 (20) N
      • 기술블로그-Django편 (152) N
      • 기술블로그-Flask편 (35)
      • AI 분석 (4)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (72)
      • Fastapi (1) N
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Chapter 3-11 직렬화(Serialization) & 역직렬화(Deserialization)
상단으로

티스토리툴바