직렬화 (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 |
---|