본문 바로가기

Programing (프로그래밍)/WPF & C# (C Sharp)

WPF & C# - 웹페이지에서 JSONString 값 가져오기 ( JSON / PHP / WEB / JSON_UNESCAPED_UNICODE / Newtonsoft.Json )

728x90
반응형


 WPF & C# - 웹페이지에서 JSONString 값 가져오기 ( JSON / PHP  / WEB / JSON_UNESCAPED_UNICODE / Newtonsoft.Json )


testJSON.zip



Newtonsoft.Json 추가하기

참조추가 > NuGet 패키지 관리 > 찾아보기 > Newtonsoft.Json > 설치





json.php



PHP ( json string 생성하기 )
1
2
3
4
5
6
<?php
$language["korean"= "한글";
$language["english"= "Hello";
 
echo json_encode($language,JSON_UNESCAPED_UNICODE); // {"korean":"안녕","english":"hi"}
?>
cs


출력
{"korean":"한글","english":"Hello"}



MainWindow.xaml



1
2
3
4
<StackPanel>
    <Button x:Name="btn" Height="28" Click="btn_Click"></Button>
    <Label x:Name="lbl"></Label>
</StackPanel>
cs



MainWindow.xaml.cs


using System;
using System.IO;
using System.Net;
using System.Text;
using System.Windows;
using Newtonsoft.Json;

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
private void btn_Click(object sender, RoutedEventArgs e)
{
    string url = "";
 
    // 1. JSON string으로 받기
    string jsonString = Request_Json(url);
    System.Diagnostics.Debug.WriteLine(jsonString);
 
    // 2. JSON string으로부터 Object 가져오기
    Person pObj = JsonConvert.DeserializeObject<Person>(jsonString);
    lbl.Content = jsonString;
    lbl.Content += "\n" + pObj.korean;
    lbl.Content += "\n" + pObj.english;
}
 
// class 생성
public class Person
{
    public string korean { get; set; }
    public string english { get; set; }
}
 
// PHP 페이지에서 Json String 가져오기
private string Request_Json(string url)
{
    string result = string.Empty;
    try
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        using (var response = (HttpWebResponse)request.GetResponse())
        {
            using (Stream responseStream = response.GetResponseStream())
            {
                using (StreamReader stream = new StreamReader(responseStream, Encoding.UTF8))
                {
                    result = stream.ReadToEnd();
                }
            }
        }
    }
    catch (Exception e)
    {
        //                Console.WriteLine(e.Message);
    }
    return result;
}
cs



728x90
반응형