C#/과제

2020.04.21. 과제 - json 파일 불러오기

dev_sr 2020. 4. 21. 23:14

오늘 배운 방법 외에 추가로 한가지 밖에 못 찾았습니다

 

 

 

json 파일로 변환할 item_data 엑셀 데이터 (homeEscape 게임 아이템)

 

 

 

1. File.ReadAllText(string path) 메서드로 읽어오기

 

1) App class 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Study_013
{
    class App
    {
        public App()
        {
            // 1.File.ReadAllText(string path)
 
            string path = "./item_type.json";
            string json = File.ReadAllText(path);
 
            itemData[] arrItemDatas = JsonConvert.DeserializeObject<itemData[]>(json);
 
            Dictionary<int, itemData> dicItemDatas = new Dictionary<int, itemData>();
 
            foreach(itemData data in arrItemDatas)
            {
                dicItemDatas.Add(data.id, data);
            }
 
            foreach(KeyValuePair<int, itemData> pair in dicItemDatas)
            {
                Console.WriteLine("{0}, {1}, {2}",pair.Key,pair.Value.name,pair.Value.item_type);
            }
 
        }
    }
}
 
 

 

2) itemData class 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Study_013
{
    class itemData
    {
        public int id;
        public string name;
        public int item_type;
    }
}
 
 

 

3) 결과값

 

 

 

2. StreamReader 메서드로 읽어오기

 

1) App class 코드 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
 
 
namespace Study_013
{
    class App
    {
 
        public itemData[] arrItemDatas;
        public App()
        {
            // 2. StreamReader 메서드 사용해서 읽어오기  
 
 
            //File. OpenText: UTF-8로 인코딩된 기존 텍스트 파일을 읽기용으로 연다
            //StreamReader file: 지정된 파일 이름에 대해 System.IO.StreamReader 클래스의 새 인스턴스를 초기화한다.
            using (StreamReader file = File.OpenText(@"./item_type.json"))
            {
                //JsonSerializer : 개체 또는 값 형식을 JSON으로 직렬화하고 JSON을 개체 또는 값 형식으로 역직렬화하는 기능을 제공한다..
                JsonSerializer serializer = new JsonSerializer();
                //itemData[] 타입으로 역직렬화
                arrItemDatas = (itemData[])serializer.Deserialize(file, typeof(itemData[]));
            }
 
            Dictionary<int, itemData> dicItemDatas = new Dictionary<int, itemData>();
 
            foreach (itemData data in arrItemDatas)
            {
                dicItemDatas.Add(data.id, data);
            }
 
            foreach (KeyValuePair<int, itemData> pair in dicItemDatas)
            {
                Console.WriteLine("{0}, {1}, {2}", pair.Key, pair.Value.name, pair.Value.item_type);
            }
        }
    }
}
 
 

 

 

2) itemData class 는 동일

 

3) 결과값