不知道上一個項目實戰《Windows Phone 項目實戰之帳戶助手》 你們學會建立本身的Windows Phone 應用程序沒有?今天爲你們帶來另外一個涉及網絡的項目實戰:個人微盤。涉及的技術知識點有:Json、Network、本地上傳文件、SDK、Hammock、微盤 json
用過新浪微博的朋友確定很喜歡微盤 ,咱們能夠存儲的文件而且與朋友分享,並且下載不須要任何積分(這點很重要,哈哈). 目前國內的網盤只有微盤是提供API給開發者的,咱們能夠本身寫App來操做微盤,微盤的API地址爲:http://vdisk.me/api (須要註冊後才能查看)。api
打開網址:http://vdisk.me/?a=login#register ,輸入郵箱及密碼就能夠建立微盤的帳號網絡
註冊成功後,登陸網站,在首頁的最下方找到API連接,點擊後的url地址爲http://vdisk.me/api 數據結構
點擊建立新應用後會跳轉到輸入應用詳細信息的頁面,以下圖:ide
輸入完詳細後,咱們點擊"建立"按鈕,會提示你建立成功,而後咱們就能在"個人應用"中找到App Key以及App Secret,有了這兩個東西咱們就可使用微盤提供的API了測試
在編寫具體代碼以前,先來看看文檔中返回的數據,和發起的請求是什麼樣的。 如上圖的"保持同步"接口,請求方式爲POST或者GET,返回的結果是JSON格式的,一樣下面的接口返回的數據都是JSON格式的。【如下的代碼能夠在這裏找到】網站
那麼咱們如何將JSON格式變成咱們熟悉的類呢?在Windows Phone 中咱們有兩種選擇:url
1. 使用System.Runtime.Serialization.Json命名空間下的DataContractJsonSerializer
2.使用Newtonsoft.Json.WindowsPhone 類庫spa
那麼咱們該如何選擇呢?個人建議是若是你的應用中須要解析大量的JSON文件,這時候你能夠選擇第三方類庫Newtonsoft.Json.WindowsPhone它提供更多的選擇項給咱們,可是若是隻是解析個別的JSON文件,建議採用.NET類庫中自帶的JSON序列化類。orm
下面來看看如何序列化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以實現自定義屬性。以下圖,咱們創建兩個新的類,分別用於這兩種方法。
咱們運行測試代碼後,發現使用 DataContractJsonSerializer序列化的結果中有一個屬性沒有被解析出來,而Newtonsoft是正常解析的
Newtonsoft.Json.WindowsPhone 還有許多選項,因爲篇幅有限,這裏就不繼續說了。
以上的代碼能夠在這裏找到