본문 바로가기

Programming/C#

[C#-winform] Json 요청 과 Parsing

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
      public class CLSList 
      {
        public string TYPE { get; set; }
        public string NAME { get; set; }
        public string IMGURL { get; set; }
        public string ID { get; set; }
        public string SITEURL { get; set; }
        public string DATE { get; set; }
       }
//제이슨을 요청해서 콘솔이나 메시지박스로 먼저 찍어 보시고,
// 필요한 정보를 클래스 형태로 정의해주세요.
  private async void Form1_Load(object sender, EventArgs e)
        {
            string json = this.Request_Json();
            this.ParseJson(json);
        }
 
        private string Request_Json()
        {
            string result = null;
            string url = "Json을 요청 할 URL" ;
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);  
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream stream = response.GetResponseStream();
                StreamReader reader = new StreamReader(stream, Encoding.UTF8);
                 //URF8인코딩을 한 상태로 Json을 읽어온다.
                result = reader.ReadToEnd();
                stream.Close();
                response.Close();
                result = @result.Replace("\r\n""").Replace("\\""").Replace(" """); 
                //Json형태 다듬기.
                //인코딩 웹에서 Json을 받아오는 경우 의도치 않은 공백이나
                // Escape 문자가 나타날 수 있으니 해주시면 좋습니다.
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message); // 혹시나 에러가 발생하면 메시지를 보세요~ 
            }
            return result; //Json형태의 문자열을 리턴
        }
 
        private void ParseJson(String json) 
        //제이슨 문자열을 매개변수로 가져와, 원하는 정보만 가져온다.
        {
            System.Net.WebClient wcClient = new System.Net.WebClient();
            List<CLSList> issues = new List<CLSList>();
            JArray jsonArray = JArray.Parse(json);
            dynamic data = JObject.Parse(jsonArray[0].ToString());
            CLSList issue = new CLSList(); 
 
            foreach (JObject itemObj in jsonArray.Reverse()) 
            //linq를 사용하면 쉽게 역정렬을 할 수 있다.
            {
                issue.TYPE = itemObj["tHeaderIDX"].ToString();
                issue.ID = itemObj["tHeaderType"].ToString();
                issue.NAME = itemObj["tHeaderName"].ToString();
                issue.IMGURL = itemObj["tHeaderIMGURL"].ToString();
                issue.SITEURL = itemObj["tHeaderTYPEURL"].ToString();
                issue.DATE = itemObj["tHeaderJobDT"].ToString();
                //위 클래스에서 정의한 변수들을 넣어준다. 
                issues.Add(issue); 
            }
        }
// using문이 궁금할 때 팁!
// shift + Enter를 입력하면, using문이 자동으로 완성됩니다.
cs