<개체가 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);
}
}
}
'C# > 수업과제' 카테고리의 다른 글
[ C# ] 인벤토리 구현 (0) | 2023.01.26 |
---|---|
[ C# 10일차 ] 배열 직렬화/역직렬화 연습 (0) | 2023.01.13 |
[ C# 8일차] List<T>를 이용한 Inventory 과제 (0) | 2023.01.11 |
[C# 7일차] 배열 Inventory 과제 (0) | 2023.01.10 |
[C# 5일차] Class 응용 과제&Method 활용_BRAWLSTARS(+궁극기, 스킬) (0) | 2023.01.06 |