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

[ C# 10일차 ] 배열 직렬화/역직렬화 연습

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

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()
        {
            List<Item> items = new List<Item>();
            items.Add(new Item() { Name = "아대", Damage = 6 });
            items.Add(new Item() { Name = "완드", Damage = 2 });
            items.Add(new Item() { Name = "고양이", Damage = -1 });

            string json = JsonConvert.SerializeObject(items);
            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()
        {

        }
    }
}

 

//역직렬화 for문

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[] items = JsonConvert.DeserializeObject<Item[]>(json);
            for (int i = 0; i < items.Length; i++)
            {
                Item item = items[i];
                Console.WriteLine("{0}, {1}", item.Name, item.Damage);
            }
        }
    }
}

 

2. Stack + 이니셜라이져

//직렬화

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()
        {
            Stack<Item> items = new Stack<Item>();
            items.Push(new Item() { Name = "아대", Damage = 6 });
            items.Push(new Item() { Name = "완드", Damage = 2 });
            items.Push(new Item() { Name = "고양이", Damage = -1 });

            string json = JsonConvert.SerializeObject(items);
            Console.WriteLine(json);
            File.WriteAllText("./my_item.json", json);
        }
    }
}

 

//역직렬화 foreach문

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[] items = JsonConvert.DeserializeObject<Item[]>(json);
            foreach(Item item in items)
            {
                Console.WriteLine("{0}, {1}", item.Name, item.Damage);

            }
        }
    }
}

 

3. Queue + 이니셜라이져

//직렬화

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()
        {
            Queue<Item> items = new Queue<Item>();
            items.Enqueue(new Item() { Name = "아대", Damage = 6 });
            items.Enqueue(new Item() { Name = "완드", Damage = 2 });
            items.Enqueue(new Item() { Name = "고양이", Damage = -1 });

            string json = JsonConvert.SerializeObject(items);
            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;
using System.IO;
using Newtonsoft.Json;


namespace Day10
{
    class App
    {
        //생성자
        public App()
        {
            string json = File.ReadAllText("./my_item.json");
            Item[] items = JsonConvert.DeserializeObject<Item[]>(json);
            for (int i = 0; i < items.Length; i++)
            {
                Item item = items[i];
                Console.WriteLine("{0}, {1}", item.Name, item.Damage);
            }
        }
    }
}

728x90