C#/복습
직렬화, 역직렬화
Game Client Lee Hwanguk
2023. 1. 24. 00:35
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using System.IO;
namespace ConsoleApp8
{
internal class App
{
public App()
{
//객체 직렬화/역직렬화
//1.직렬화(인스턴스 -> json)
Item item0=new Item("장검", 10); //인스턴스 생성
string json=JsonConvert.SerializeObject(item0); //직렬화
Console.WriteLine(json); //json화 확인
File.WriteAllText("my_item.json",json); //파일 저장. 파일명(my_item.json), 확장자 json
//2.역직렬화(json->인스턴스)
string json1 = File.ReadAllText("./my_item.json"); //파일 읽기
Item item1=JsonConvert.DeserializeObject<Item>(json1); //역직렬화
Console.WriteLine("name:{0}, damage:{1}",item1.name,item1.damage);
//3.직렬화(배열->json)
Item[] items = { new Item("단검", 5),
new Item("도끼",12),
new Item("창",13)
};
string json2=JsonConvert.SerializeObject(items); //직렬화
Console.WriteLine(json2);
File.WriteAllText("./my_item.json", json2);
//4.역직렬화(json->배열)
string json3=File.ReadAllText("./my_item.json"); //파일 읽기
Item[] items0 = JsonConvert.DeserializeObject<Item[]>(json3); //역직렬화
List<Item>list=items0.ToList(); //.ToList로 list만들기
foreach(var item in list)
{
Console.WriteLine("name:{0} damage:{1}",item.name,item.damage);
}
string path = "my_item.json";
//파일 지우기
if(File.Exists(path))
{
File.Delete(path);
Console.WriteLine("파일 삭제");
}
else
{
Console.WriteLine("파일 {0}이 없다",path);
}
}
}
}
#직렬화(List -> json) 역직렬화(json->List)
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApp8
{
internal class App
{
public App()
{
//1.직렬화
//item을 담을 배열 또는 리스트(동적배열) 생성
//Item[] items = { new Item("장검", 10), new Item("단검", 4), new Item("창", 11) };
List<Item> items = new List<Item>();
//아이템 생성 후 리스트에 추가
items.Add(new Item("장검", 9));
items.Add(new Item("단검", 3));
items.Add(new Item("창",11));
items.Add(new Item("도끼", 10));
string json=JsonConvert.SerializeObject(items); //items 직렬화 하기(json화)
Console.WriteLine(json); //출력으로 확인
File.WriteAllText("./my_item.json", json); //직렬화된 json 파일을 my_item.json에 저장
//2.역직렬화
string json1=File.ReadAllText("./my_item.json"); //읽은 파일(my_item.json)을 json1 에 할당
Item[]items1=JsonConvert.DeserializeObject<Item[]>(json1); //역직렬화 json1파일을 Item[]형식으로 역직렬화
foreach (var items2 in items1)
{
Console.WriteLine("name:{0} damage:{1}",items2.name, items2.damage);
}
}
}
}