[c#] C#에서의 데이터 직렬화 및 역직렬화 예제

C#에서 데이터 객체를 직렬화하고 역직렬화하는 것은 매우 중요합니다. 데이터 직렬화는 객체를 바이트 스트림으로 변환하여 파일에 저장하거나 네트워크를 통해 전송할 수 있게 해줍니다. 이 기능을 이용해 데이터를 보다 효율적으로 저장하고 전송할 수 있습니다.

데이터 직렬화

C#에서 객체를 직렬화하려면 System.Runtime.Serialization 네임스페이스를 사용해야 합니다. 다음은 데이터를 직렬화하는 간단한 예제입니다.

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
class Person
{
    public string Name;
    public int Age;
}

class Program
{
    static void Main()
    {
        Person person = new Person { Name = "Alice", Age = 30 };

        IFormatter formatter = new BinaryFormatter();
        Stream stream = new FileStream("person.bin", FileMode.Create, FileAccess.Write, FileShare.None);
        formatter.Serialize(stream, person);
        stream.Close();
    }
}

위 예제에서 Person 클래스는 Serializable 속성을 사용하여 직렬화 가능하다고 표시했습니다. BinaryFormatter 클래스를 사용하여 객체를 직렬화하고, FileStream을 이용하여 직렬화된 데이터를 파일에 저장합니다.

데이터 역직렬화

이제 이 파일에서 데이터를 읽고 역직렬화하는 방법을 살펴보겠습니다.

class Program
{
    static void Main()
    {
        IFormatter formatter = new BinaryFormatter();
        Stream stream = new FileStream("person.bin", FileMode.Open, FileAccess.Read, FileShare.Read);
        Person person = (Person)formatter.Deserialize(stream);
        stream.Close();

        Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
    }
}

위 예제에서는 BinaryFormatter를 사용하여 파일에서 직렬화된 데이터를 읽어들이고, Deserialize 메서드를 이용하여 역직렬화합니다.

이제 직렬화와 역직렬화에 대한 간단한 예제를 살펴보았습니다. 직렬화를 통해 데이터를 파일에 저장하거나 네트워크를 통해 전송할 수 있고, 역직렬화를 통해 다시 객체로 복원할 수 있습니다.

많은 데이터베이스나 파일 입출력 라이브러리에서는 직렬화를 지원하므로, 이러한 기능을 적절히 활용하여 데이터를 효율적으로 다룰 수 있습니다.

참고 자료