C#/수업과제
[ C# 10일차 ] 배열 직렬화/역직렬화 연습
왹져박사
2023. 1. 13. 02:48
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);
}
}
}
}