不知道上一個項目實戰《Windows Phone 項目實戰之賬戶助手》 大家學會創建自己的Windows Phone 應用程序沒有?今天爲大家帶來另一個涉及網絡的項目實戰:我的微盤。涉及的技術知識點有:Json、Network、本地上傳文件、SDK、Hammock、微盤
用過新浪微博的朋友肯定很喜歡微盤 ,我們可以存儲的文件並且與朋友分享,而且下載不需要任何積分(這點很重要,哈哈). 目前國內的網盤只有微盤是提供API給開發者的,我們可以自己寫App來操作微盤,微盤的API地址爲:http://vdisk.me/api (需要註冊後才能查看)。 打開網址:http://vdisk.me/?a=login#register ,輸入郵箱及密碼就可以創建微盤的賬號 註冊成功後,登錄網站,在首頁的最下方找到API鏈接,點擊後的url地址爲http://vdisk.me/api 點擊創建新應用後會跳轉到輸入應用詳細信息的頁面,如下圖: 輸入完詳細後,我們點擊"創建"按鈕,會提示你創建成功,然後我們就能在"我的應用"中找到App Key以及App Secret,有了這兩個東西我們就可以使用微盤提供的API了 在編寫具體代碼之前,先來看看文檔中返回的數據,和發起的請求是什麼樣的。 如上圖的"保持同步"接口,請求方式爲POST或者GET,返回的結果是JSON格式的,同樣下面的接口返回的數據都是JSON格式的。【以下的代碼可以在這裏找到】 那麼我們如何將JSON格式變成我們熟悉的類呢?在Windows Phone 中我們有兩種選擇: 1. 使用System.Runtime.Serialization.Json命名空間下的DataContractJsonSerializer 那麼我們該如何選擇呢?我的建議是如果你的應用中需要解析大量的JSON文件,這時候你可以選擇第三方類庫Newtonsoft.Json.WindowsPhone它提供更多的選擇項給我們,但是如果只是解析個別的JSON文件,建議採用.NET類庫中自帶的JSON序列化類。 下面來看看如何序列化JSON文件,我對兩種方法都簡單介紹下,其實用法大致一致,只不過 Newtonsoft.Json.WindowsPhone提供的可選擇項較爲豐富。如下圖,如果我們需要把下述的json字符串變爲一個ReturnResult類 需要將Json序列化爲對象,我們需要一個類的定義,我們可以定義類如下: 使用 DataContractJsonSerializer需要添加System.ServiceModel.Web類庫的引用,如果你使用DataContract模式的,我們還需要引用System.Runtime.Serialization類庫的引用。 將JSON字符串序列化爲對象,我們需要一個類型爲ReturnResult的序列化器,序列化器以流的形式讀到對象的實例中,如下圖 在運行TestJson之前,我們在var result=serializer.ReadObject(ms);這一行打上斷電,方便查看類中屬性的值,可以看到與期望的效果一致。 Newtonsoft.Json.WindowsPhone 的基本使用方法同DataContractJsonSerializer,下面用以Newtonsoft.Json.WindowsPhone序列化一個較爲複雜的類介紹Newtonsoft.Json.WindowsPhone的使用方法。 序列化的方法很簡單,只需要一行代碼就搞定 運行程序後,會發現result是我們所期望所轉換的類。 在使用自定義類屬性上面二者存在一定的差別,使用 DataContractJsonSerializer需要對每個屬性進行申明Attribute,而使用Newtonsoft.Json可以對單獨的屬性進行申明Attribute以實現自定義屬性。如下圖,我們建立兩個新的類,分別用於這兩種方法。 以上的代碼可以在這裏找到一、註冊微盤賬號
1.1、Step 1 註冊微盤賬戶
1.2、Step 2 登錄微盤,創建微盤應用
1.3、Step 3 查看API,將自己所需要的API寫爲代碼
二、Windows Phone 中處理JSON
2.使用Newtonsoft.Json.WindowsPhone 類庫 2.1、使用DataContractJsonSerializer
2.2. 使用 Newtonsoft.Json.WindowsPhone
2.3.兩者區別
我們運行測試代碼後,發現使用 DataContractJsonSerializer序列化的結果中有一個屬性沒有被解析出來,而Newtonsoft是正常解析的
Newtonsoft.Json.WindowsPhone 還有許多選項,由於篇幅有限,這裏就不繼續說了。
Windows Phone 項目實戰之我的微盤(上)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.