using System;
using System.IO; //using 지시문으로 네임스페이스 추가
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HelloWorld
{
class App
{
//생성자
public App()
{
string path = "./budget_data.json";
string json = File.ReadAllText(path);
Console.WriteLine(json);
//역직렬화 하기
BudgetData[] budgetDatas = JsonConvert.DeserializeObject<BudgetData[]>(json);
Dictionary<int, BudgetData> dicBudgetDatas = new Dictionary<int, BudgetData>();
foreach (BudgetData data in budgetDatas)
{
dicBudgetDatas.Add(data.id, data);
}
foreach (KeyValuePair<int, BudgetData> pair in dicBudgetDatas)
{
Console.WriteLine("key: {0}, val: {1} {2}", pair.Key, pair.Value.name, pair.Value.type);
}
//string path = "./item_data.json";
//string json = File.ReadAllText(path);
//Console.WriteLine(json);
////역직렬화 하기
//ItemData[] itemDatas = JsonConvert.DeserializeObject<ItemData[]>(json);
////itemDatas의 값은 ItemData타입의 배열 인스턴스
////배열 안에 요소들의 값은? ItemData 클래스의 인스턴스 5개
//Dictionary<int, ItemData> dicItemDatas = new Dictionary<int, ItemData>();
//foreach (ItemData data in itemDatas)
//{
// dicItemDatas.Add(data.id, data);
//}
////출력하기
//foreach (KeyValuePair<int, ItemData> pair in dicItemDatas)
//{
// Console.WriteLine("key: {0}, val: {1} {2}", pair.Key, pair.Value.name, pair.Value.damage);
//}
}
}
}
using System;
namespace HelloWorld
{
public class BudgetData
{
public int id;
public string name;
public int type;
}
}
더보기
using System;
namespace HelloWorld
{
public class ItemData
{
public int id;
public string name;
public float damage;
}
}
수정 - enum타입 추가
using System;
using System.IO; //using 지시문으로 네임스페이스 추가
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HelloWorld
{
class App
{
public enum eBudgetType
{
Gold, Diamond, Sapphire, Ruby
}
//생성자
public App()
{
//1. json파일 변수에 넣고 파일의 문자들을 읽어들여서 변수에 넣기
//2. 역직렬화 하기 (배열. JsonConvert.DeserializeObject<타입>(json값)
//3. 배열의 요소들을 Dictionary에 추가하기 (foreach문 사용)
//4. Dictionary에 잘 추가됐는지 출력해서 확인하고 마무리.
string path = "./budget_data.json";
string json = File.ReadAllText(path);
//Console.WriteLine(json);
//역직렬화 하기
BudgetData[] budgetDatas = JsonConvert.DeserializeObject<BudgetData[]>(json);
Dictionary<int, BudgetData> dicBudgetDatas = new Dictionary<int, BudgetData>();
foreach (BudgetData data in budgetDatas)
{
dicBudgetDatas.Add(data.id, data);
}
foreach (KeyValuePair<int, BudgetData> pair in dicBudgetDatas)
{
BudgetData data = pair.Value;
Console.WriteLine("key: {0}, val: {1} {2}", data.id, data.name, (eBudgetType)data.type);
}
}
}
}
'C# > 수업 내용' 카테고리의 다른 글
json저장, 불러오기 (0) | 2021.12.24 |
---|---|
파일 읽기, 역직렬화 연습 2 (0) | 2021.12.24 |
람다식 연습 15 (Comparision) (0) | 2021.12.24 |
람다식 연습 8 (Action) (0) | 2021.12.24 |
람다식 연습 7 (Func) - 피자 (0) | 2021.12.24 |