본문 바로가기

C#

C# json 파일 List 클래스로 불러오기

반응형

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