C#/수업 내용

[C#] Newtonsoft.Json 파일 읽기, 역직렬화

JSH1 2021. 9. 8. 16:43
        using System.IO;
        using Newtonsoft.Json;

        public App()
        {
            string path = "./item_data.json";
            string json = File.ReadAllText(path);

            // 역직렬화 하기
            // json형식에 따라 형식 매개변수가 달라진다.
            ItemData[] itemDatas = JsonConvert.DeserializeObject<ItemData[]>(json);

            // itemDatas의 값은 ItemData타입의 배열 인스턴스
            // 배열 안에 요소: ItemData클래스의 인스턴스 x 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);
            }
        }
    }
    public class ItemData
    {
        public int id;
        public string name;
        public float damage;
    }
[	//item_data.json
  {
    "id": "100",
    "name": "장검",
    "damage": "5"
  },
  {
    "id": "101",
    "name": "단검",
    "damage": "3.5"
  },
  {
    "id": "102",
    "name": "도끼",
    "damage": "4.8"
  },
  {
    "id": "103",
    "name": "활",
    "damage": "4"
  },
  {
    "id": "104",
    "name": "지팡이",
    "damage": "0"
  }
]


    using System.IO;
    using Newtonsoft.Json;

    class App
    {
        public App()
        {
            string path = "./jewel_data.json";
            string json = File.ReadAllText(path);

            JewelData[] jewelDatas = JsonConvert.DeserializeObject<JewelData[]>(json);

            Dictionary<int, JewelData> dicJewelDatas = new Dictionary<int, JewelData>();
            foreach(JewelData data in jewelDatas)
            {
                dicJewelDatas.Add(data.id, data);
            }

            foreach(KeyValuePair<int, JewelData> pair in dicJewelDatas)
            {
                Console.WriteLine("id:{0}, name:{1}, type:{2}", pair.Value.id, pair.Value.name, pair.Value.type);
            }
        }
    }
    public class JewelData
    {
        public int id;
        public string name;
        public int type;
    }
[	//jewel_data.json
  {
    "id": "100",
    "name": "골드",
    "type": "0"
  },
  {
    "id": "101",
    "name": "다이아",
    "type": "1"
  },
  {
    "id": "102",
    "name": "사파이어",
    "type": "2"
  },
  {
    "id": "103",
    "name": "루비",
    "type": "3"
  }
]

'C# > 수업 내용' 카테고리의 다른 글

[C#] Iterator, yield  (0) 2021.09.10
[C#] Json을 사용한 인벤토리 만들기 연습  (0) 2021.09.10
[C#] Newtonsoft.Json 설치  (0) 2021.09.08
[C#] 파일 시스템 text, json  (0) 2021.09.08
[C#] LINQ  (0) 2021.09.08