직렬화랑 역직렬화 정리

박의진·2025년 8월 22일

직렬화랑 역직렬화 뭔지 궁금해서 찾아봄

왜 찾아보게 됐냐면 flutter -> vue로 restful api 응답값 전달할때 , backend에서 dto <-> json 매핑 직렬화랑 역직렬화가 엮여있음

1.직렬화(Serialization)

정의: 객체(Object)나 자료구조를 바이트(byte) 형태로 변환하는 과정

목적: 메모리에 존재하는 객체는 프로그램이 실행되는 동안만 유지됨 → 파일, DB, 네트워크로 보내려면 이진 데이터 형태가 필요함. 직렬화를 통해 객체를 저장하거나 네트워크로 전송 가능

예시:

Java: ObjectOutputStream → 객체를 파일로 직렬화
JSON/XML 변환 → 네트워크 API 응답을 위해 객체를 문자열(JSON)로 직렬화

2.역직렬화(Deserialization)

정의: 직렬화된 데이터(바이트나 문자열)를 다시 객체로 복원하는 과정

목적:
저장된 파일을 다시 객체로 불러오기
네트워크에서 받은 JSON을 DTO로 변환하기

예시:
Java: ObjectInputStream → 파일에서 객체 복원
JSON → DTO 매핑 (Jackson, Gson 등 사용)

한마디로

vue <-> flutter <-> springboot 구조에서

백엔드에서 받은 데이터를 플러터에서는 직렬화된(json string) 상태로 받음!
이걸 바로 뷰에 전달해서 값을 처리하려고 하면 뷰에서는 직렬화된 데이터 처리를 스트링으로 인식하기 때문에 객체로 처리가 안됨!

그래서 플러터에서 jsonDecode인가 이거로 역직렬화 하여 객체형태로 vue에 전달 해줘야함

Spring Boot DTO → (Jackson 직렬화) → JSON 문자열
→ Flutter 수신 → (jsonDecode 등 역직렬화) → Dart 객체
→ (브릿지 전송 시 다시 jsonEncode 직렬화) → 문자열
→ Vue 수신 → (JSON.parse 역직렬화) → JS 객체

profile
주니어 백엔드 개발자의 개발 log💻

0개의 댓글