본문 바로가기
C#/수업과제

[ C# 10일차 ] 객체1 직렬화/역직렬화 연습

by 왹져박사 2023. 1. 13.
728x90

<개체가 1인 직렬화/역직렬화>

 

1. 프로퍼티 + 인스턴스 이니셜라이져

//직렬화

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json;

namespace Day10
{
    class App
    {
        //생성자
        public App()
        {
            Item item = new Item() { Name = "아대", Damage = 6 };
            string json = JsonConvert.SerializeObject(item);
            Console.WriteLine(json);
            File.WriteAllText("./my_item.json", json);
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Day10
{
    class Item
    {
        public string Name
        {
            get;set;
        }
        public int Damage
        {
            get;set;
        }
        public Item()
        {

        }
    }
}

//역직렬화

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json;


namespace Day10
{
    class App
    {
        //생성자
        public App()
        {
            string json = File.ReadAllText("./my_item.json");

            Item item = JsonConvert.DeserializeObject<Item>(json);
            Console.WriteLine(item);
            Console.WriteLine("name: {0}, damage: {1}", item.Name, item.Damage);

        }
    }
}

 

2. 프로퍼티 + 매개변수가 2개인 인스턴스

//직렬화

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json;

namespace Day10
{
    class App
    {
        //생성자
        public App()
        {
            Item item = new Item("완드", 2);
            string json = JsonConvert.SerializeObject(item);
            Console.WriteLine(json);
            File.WriteAllText("./my_item.json", json);
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Day10
{
    class Item
    {
        public string Name
        {
            get;set;
        }
        public int Damage
        {
            get;set;
        }
        public Item(string name, int damage)
        {
            this.Name = name;
            this.Damage = damage;
        }
    }
}

//역직렬화

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json;


namespace Day10
{
    class App
    {
        //생성자
        public App()
        {
            string json = File.ReadAllText("./my_item.json");

            Item item = JsonConvert.DeserializeObject<Item>(json);
            Console.WriteLine(item);
            Console.WriteLine("name: {0}, damage: {1}", item.Name, item.Damage);

        }
    }
}

3. 멤버 변수 + 매개변수가 2개인 인스턴스

//직렬화

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json;

namespace Day10
{
    class App
    {
        //생성자
        public App()
        {
            Item item = new Item("고양이", -1);
            string json = JsonConvert.SerializeObject(item);
            Console.WriteLine(json);
            File.WriteAllText("./my_item.json", json);
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Day10
{
    class Item
    {
        public string name;
        public int damage;

        public Item(string name, int damage)
        {
            this.name = name;
            this.damage = damage;
        }
    }
}

//역직렬화

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json;


namespace Day10
{
    class App
    {
        //생성자
        public App()
        {
            string json = File.ReadAllText("./my_item.json");

            Item item = JsonConvert.DeserializeObject<Item>(json);
            Console.WriteLine(item);
            Console.WriteLine("name: {0}, damage: {1}", item.name, item.damage);

        }
    }
}

728x90