본문 바로가기
New/CS 복습

데이터 직렬화 & 역직렬화

by onenewkong 2025. 3. 29.

직렬화 (Serialization)

: 데이터 구조를 바이트 스트림 또는 문자열로 변환하는 과정

  • Json은 JavaSript 객체를 문자열 형태로 변환하는 것을 의미하고, 이를 통해 데이터를 네트워크에 전송하거나 파일에 저장할 수 있다.
  • 직렬화된 데이터는 전송을 위해 표준 텍스트 형식으로 인코딩된다.
  • C#에서 만든 객체를 Json 형식의 문자열로 변환하는 과정

정리하면...

Json은 JavaScript 객체를 문자열 형태로 변환한 것이고, 목적은 네트워크로 데이터를 전송하거나 파일 저장을 위함임

직렬화를 통해서 데이터를 표준 텍스트로 인코딩해서 전송하는 것

 

역직렬화 (Deserialization)

: 직렬화된 데이터를 다시 원래의 데이터 구조로 변환하는 과정

  • Json 문자열을 다시 C# 객체로 변환하는 과정

 

직렬화 및 역직렬화가 필요한 이유

1) 서버와 클라이언트 간 데이터 전송

  • 서버는 Json 형식의 데이터를 보내고, 클라이언트는 이를 객체로 변환해서 사용
  • 클라이언트가 데이터를 서버로 보낼 때도 객체를 Json으로 변환해야 함

2) 데이터 저장 및 로드

  • 게임 데이터를 Json으로 저장하면 파일로 보관하기 편리함
  • 게임을 다시 실행할 때 Json 데이터를 불러와 객체로 변환하면 쉽게 복구 가능

3) 데이터 가독성 및 유지보수 용이

  • Json은 사람이 읽기 쉬운 형식으로, 유지보수에 용이함
  • 새로운 데이터 필드를 추가하기에 편리함

 

서울대 드림위버 프로젝트에서..

Unity에서 HTTP 통신을 통해 서버에서 데이터를 가져와 저장하는 과정에서 서버에서 Response 값으로 반환하는 Json 데이터를 C# 객체로 변환하기 위해 역직렬화를 사용했었다.

Unity에서는 Json 데이터를 그저 문자열로만 인식하기 때문에, 해당 데이터를 활용하기 위해서 C# 객체로 변환했고 이때 사용된 라이브러리는 Newtonsoft.Json 이었다.

JsonUtility는 딕셔너리 같은 복잡한 자료형을 지원하지 않고, private 필드는 무시하는 등 Json 데이터 구조에 대해 제한이 있기 때문에 Newtonsoft.Json을 택했다.

 

시간이 좀 지나고, 다른 직무의 일을 하고 있으니 점점 기억을 잃어가서.. 꾸준히 정리하고 복습해야겠다..ㅜㅜ

 

'New > CS 복습' 카테고리의 다른 글

디자인 패턴 - 컴포넌트 패턴  (0) 2025.03.29