오늘은 팀프로젝트를 하면서 직렬화에 대한 주제가 생각이 나서 한번 작성해본다.
Serializable 특성은 객체의 상태를 저장하거나 네트워크 데이터를 전송하기 전에 바이트 스트림으로 변환하는 과정을 말한다. 변환된 스트림은 파일이나 서버, DB등에 전송 또는 저장 가능한 상태로 보내지고 Deserializable을 통해 복원도 용이하다.
C#에서는 아래 코드 처럼 사용 가능하다.
[Serializable] // 직렬화가 가능한 클래스가 된다.
public class Person
{
public string Name;
public int Age;
}
미리 클래스에 [Serializable] 속성을 설정하고
// 객체 생성
Person person = new Person();
person.Name = "홍길동";
person.Age = 30;
// 객체 직렬화
Serialize(person, "person.dat");
// 객체 역직렬화
Person deserializedPerson = Deserialize("person.dat");
// 결과 출력
Console.WriteLine("이름: " + deserializedPerson.Name);
Console.WriteLine("나이: " + deserializedPerson.Age);
직렬화와 역 직렬화를 할 수 있게 된다.
실제로 많이 사용하는 곳은 JSON, XML 형태로 변환할때 많이 사용한다.
그리고 일반적으로 데이터를 저장 또는 전송이 해야 한다면 일단 직렬화를 고려해봐야한다.
Json 변환은 다음에 다루도록 하겠다.