반응형
NuGet 패키지 관리자에서 Newtonsoft.Json 설치
프로그램을 실행할 위치에서 reward.json 파일을 만듬
[
{
"day": "1",
"rewardCount": "10",
},
{
"day": "2",
"rewardCount": "20",
},
{
"day": "3",
"rewardCount": "30",
},
{
"day": "4",
"rewardCount": "40",
},
{
"day": "5",
"rewardCount": "50",
},
]
JsonTOClassTest.cs 코드 작성
class RewardScript
{
public int day;
public int rewardCount;
}
class RewardScriptAll
{
public List<RewardScript> list;
}
class JsonToClassTest
{
public List<RewardScript> Scripts { get; set; }
public void Load()
{
string path = "./reward.json";
if (File.Exists(path))
{
string jsonContent = File.ReadAllText(path);
var scripts = Newtonsoft.Json.JsonConvert.DeserializeObject<RewardScriptAll>($"{{ \"list\" : {jsonContent}}}");
Scripts = scripts.list;
}
}
public int GetDayToRewardCount(int day)
{
var script = Scripts.Find(s => s.day == day);
// script가 null이 아니라면 rewardCount 리턴, null이라면 0 리턴
return script?.rewardCount ?? 0;
}
}
class Program
{
static void Main(string[] args)
{
JsonToClassTest jsonToClassTest = new JsonToClassTest();
jsonToClassTest.Load();
foreach(var script in jsonToClassTest.Scripts)
{
Console.WriteLine($"day: {script.day}, rewardCount: {script.rewardCount}");
}
Console.WriteLine($"{jsonToClassTest.GetDayToRewardCount(3)}");
Console.WriteLine($"{jsonToClassTest.GetDayToRewardCount(6)}");
}
}
반응형
'C#' 카테고리의 다른 글
C# Random 클래스 Next 메서드 (0) | 2022.01.06 |
---|---|
C# 링크(LINQ) (0) | 2022.01.05 |
C# StringBuilder를 사용하여 코드 파일 만들기 (0) | 2022.01.03 |
C# 파일 입출력(File, Directory, Path) (0) | 2022.01.02 |
C# 튜플(Tuple) (0) | 2022.01.02 |