Windows Phone 項目實戰之個人微盤(上)

 不知道上一個項目實戰Windows Phone 項目實戰之帳戶助手》 你們學會建立本身的Windows Phone 應用程序沒有?今天爲你們帶來另外一個涉及網絡的項目實戰:個人微盤涉及的技術知識點有:JsonNetwork、本地上傳文件、SDKHammock、微盤 json

用過新浪微博的朋友確定很喜歡微盤 ,咱們能夠存儲的文件而且與朋友分享,並且下載不須要任何積分(這點很重要,哈哈)目前國內的網盤只有微盤是提供API給開發者的,咱們能夠本身寫App來操做微盤,微盤的API地址爲:http://vdisk.me/api (須要註冊後才能查看)。api

1、註冊微盤帳號

1.一、Step 1 註冊微盤帳戶

打開網址:http://vdisk.me/?a=login#register ,輸入郵箱及密碼就能夠建立微盤的帳號網絡

1.二、Step 2 登陸微盤,建立微盤應用

註冊成功後,登陸網站,在首頁的最下方找到API連接,點擊後的url地址爲http://vdisk.me/api  數據結構

 

點擊建立新應用後會跳轉到輸入應用詳細信息的頁面,以下圖:ide

   

 

輸入完詳細後,咱們點擊"建立"按鈕,會提示你建立成功,而後咱們就能在"個人應用"中找到App Key以及App Secret,有了這兩個東西咱們就可使用微盤提供的API測試

1.三、Step 3 查看API,將本身所須要的API寫爲代碼

 

2、Windows Phone 中處理JSON

在編寫具體代碼以前,先來看看文檔中返回的數據,和發起的請求是什麼樣的。 如上圖的"保持同步"接口,請求方式爲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

 2.一、使用DataContractJsonSerializer

須要將Json序列化爲對象,咱們須要一個類的定義,咱們能夠定義類以下:

  上述類的屬性須要跟 json 字符串中的 Key 保持一致,大小寫區分。固然咱們也能夠自定義類的屬性,便可以與給定的 Key 不一致,這樣方便咱們查看  

使用 DataContractJsonSerializer須要添加System.ServiceModel.Web類庫的引用,若是你使用DataContract模式的,咱們還須要引用System.Runtime.Serialization類庫的引用。

JSON字符串序列化爲對象,咱們須要一個類型爲ReturnResult的序列化器,序列化器以流的形式讀到對象的實例中,以下圖

  若是採用第二種方式,只須要將 typeof ReturnResult )修改成 typeof ReturnResult2

在運行TestJson以前,咱們在var result=serializer.ReadObject(ms);這一行打上斷電,方便查看類中屬性的值,能夠看到與指望的效果一致。

2.2. 使用 Newtonsoft.Json.WindowsPhone

 

Newtonsoft.Json.WindowsPhone 的基本使用方法同DataContractJsonSerializer,下面用以Newtonsoft.Json.WindowsPhone序列化一個較爲複雜的類介紹Newtonsoft.Json.WindowsPhone的使用方法。

  如上圖所示,這樣的數據結構不是一個類,而是一個類裏面又有一個類,因此咱們須要定義兩個類

 

序列化的方法很簡單,只須要一行代碼就搞定

運行程序後,會發現result是咱們所指望所轉換的類。

2.3.二者區別

在使用自定義類屬性上面兩者存在必定的差異,使用 DataContractJsonSerializer須要對每一個屬性進行申明Attribute,而使用Newtonsoft.Json能夠對單獨的屬性進行申明Attribute以實現自定義屬性。以下圖,咱們創建兩個新的類,分別用於這兩種方法。
咱們運行測試代碼後,發現使用 DataContractJsonSerializer序列化的結果中有一個屬性沒有被解析出來,而Newtonsoft是正常解析的 
 Newtonsoft.Json.WindowsPhone 
還有許多選項,因爲篇幅有限,這裏就不繼續說了。

以上的代碼能夠在這裏找到

相關文章
相關標籤/搜索