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格式後,正常應該會看到以下畫面
簡而言之就是非常凌亂的畫面&格式。
這時已經有開放資料格式來源(JSON)的連結與內容後,就可以開始來寫App了~
1. 要對JSON做處理之前,要先安裝JSON套件,在參考按右鍵 -> 管理NuGet套件 –> 安裝JSON.NET
2. 安裝完成後,開啟一個Windows phone app,並在專案中加入一個新項目 -> 選擇類別
3. 之後便把剛剛看到凌亂的JSON格式畫面複製下來,在新增的類別中,
按下編輯 -> 選擇性貼上 -> 貼上JSON作為類別,完成後就會很神奇地看到一個整理好的結構,如下:
4. 回到專案預設的MainPage.xaml.cs,引入以下參考。
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. 最後,執行的結果如下:
看完以上這些步驟,就可以製作出一個擷取開放資料格式JSON的App了。
希望大家看完這篇,能提升寫App的功力喔~