[프로그래밍 이론] 직렬화 ( Serialization )

곰팡이참치·2024년 12월 13일

프로그래밍 이론

목록 보기
1/1

직렬화란 객체나 데이터 및 구조를 전송할 수 있는 형태로 개체 상태를 변환하는 프로세스이다. 주로 문자열이나 바이트 배열 등의 포맷으로 변환한다. 직렬화된 파일을 전달받아 다시 객체나 데이터 및 구조로 변환하는 작업은 역직렬화 ( Deserialization ) 라고 한다. 주로 진행사항을 저장하거나, 네트워크에서 서로 데이터를 주고받기 위해 한다.

예시 스크립트 전문

using System;
using System.Collections.Generic;
using System.Text.Json;
using System.Xml.Linq;

[Serializable]
struct PlayerInfo
{
    public int id { get; set; }
    public string name { get; set; }
    public float damage { get; set; }
}

class Program
{
    public static void SaveData(PlayerInfo playerinfo)
    {
        string jsonString = JsonSerializer.Serialize(playerinfo);
        File.WriteAllText("playerinfo.json", jsonString);
    }

    public static PlayerInfo Load()
    {
        string jsonString = File.ReadAllText("playerinfo.json");
        return JsonSerializer.Deserialize<PlayerInfo>(jsonString);
    }

    static void Main()
    {
        PlayerInfo playerinfo = new PlayerInfo();
        playerinfo.id = 1;
        playerinfo.name = "Player1";
        playerinfo.damage = 50.5f;

        SaveData(playerinfo);

        PlayerInfo loadedPlayerInfo = Load();
        Console.WriteLine($"ID: {loadedPlayerInfo.id}");
        Console.WriteLine($"Name: {loadedPlayerInfo.name}");
        Console.WriteLine($"Damage: {loadedPlayerInfo.damage}");
    }
}

실행결과

ID: 1
Name: Player1
Damage: 50.5

다음 스크립트는 플레이어 정보를 담는 구조체와 해당 구조체를 직렬화 하여 JSON 파일을 저장하고, 역직렬화 하여 JSON 파일로 부터 구조체를 읽어오는 내용을 포함하고 있다. 파일이 빌드되어 있는 경로로 가보면, JSON 파일이 생성되어있을것이다.

JSON 파일

{"id":1,"name":"Player1","damage":50.5}

보이는 것과 같이 최초로 생성하였던 playerinfo의 정보가 들어있다.

profile
게임 개발

0개의 댓글