Windows Phone App–JSON資料處理

Windows Phone App–JSON資料處理

前言

政府的開放資料平台中,如果想要得知美食、住宿、娛樂等資訊,可以透過簡單開發app擷取公開資料像.xml、JSON格式,獲取所需資訊。

今天打算擷取文化部開放資料服務網 - 文創商店的JSON格式作為示範。

 

實作

首先可以先去文化部開放資料服務網找尋自己有興趣的連結…

文化部開放資料服務網網址: http://cloud.culture.tw/opendata/

文創商店(JSON): http://cloud.culture.tw/frontsite/trans/emapOpenDataAction.do?method=exportEmapJson&typeId=L

打開JSON格式後,正常應該會看到以下畫面

image

簡而言之就是非常凌亂的畫面&格式。

 

這時已經有開放資料格式來源(JSON)的連結與內容後,就可以開始來寫App了~

1. 要對JSON做處理之前,要先安裝JSON套件,在參考按右鍵 -> 管理NuGet套件 –> 安裝JSON.NET

2. 安裝完成後,開啟一個Windows phone app,並在專案中加入一個新項目 -> 選擇類別

image

 

3. 之後便把剛剛看到凌亂的JSON格式畫面複製下來,在新增的類別中,

按下編輯 -> 選擇性貼上 -> 貼上JSON作為類別,完成後就會很神奇地看到一個整理好的結構,如下:

image

 

4. 回到專案預設的MainPage.xaml.cs,引入以下參考。

image

 

5. 可以先在MainPage.xaml中建立一個ListBox,待會用來裝資料,之後code如下:

listbox.Items.Clear();
//測試連線
if (DeviceNetworkInformation.IsWiFiEnabled == true || DeviceNetworkInformation.IsCellularDataEnabled == true || DeviceNetworkInformation.IsNetworkAvailable == true)
{
    WebClient wc = new WebClient();
    wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
    //網址是JSON的網頁
    wc.DownloadStringAsync(new Uri("http://cloud.culture.tw/frontsite/trans/emapOpenDataAction.do?method=exportEmapJson&typeId=L"));
}
void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    Rootobject ro = new Rootobject();
    List<Class1> r;
    if (e.Error == null)
    {
        DataContractJsonSerializer sir = new DataContractJsonSerializer(typeof(List<Class1>));
        MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(e.Result));
 
        r = (List<Class1>)sir.ReadObject(ms);
 
        foreach (var i in r)
        {
            listbox.Items.Add(i.name);

		

}


		

}

}

 

7. 最後,執行的結果如下:

image

 

看完以上這些步驟,就可以製作出一個擷取開放資料格式JSON的App了。

希望大家看完這篇,能提升寫App的功力喔~