Windows Phone 項目實戰之我的微盤(上)

 不知道上一個項目實戰Windows Phone 項目實戰之賬戶助手》 大家學會創建自己的Windows Phone 應用程序沒有?今天爲大家帶來另一個涉及網絡的項目實戰:我的微盤涉及的技術知識點有:JsonNetwork、本地上傳文件、SDKHammock、微盤

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

一、註冊微盤賬號

1.1、Step 1 註冊微盤賬戶

打開網址:http://vdisk.me/?a=login#register ,輸入郵箱及密碼就可以創建微盤的賬號

1.2、Step 2 登錄微盤,創建微盤應用

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

 

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

  

 

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

1.3、Step 3 查看API,將自己所需要的API寫爲代碼

 

二、Windows Phone 中處理JSON

在編寫具體代碼之前,先來看看文檔中返回的數據,和發起的請求是什麼樣的。 如上圖的"保持同步"接口,請求方式爲POST或者GET,返回的結果是JSON格式的,同樣下面的接口返回的數據都是JSON格式的。【以下的代碼可以在這裏找到】

那麼我們如何將JSON格式變成我們熟悉的類呢?在Windows Phone 中我們有兩種選擇:

1. 使用System.Runtime.Serialization.Json命名空間下的DataContractJsonSerializer
2.
使用Newtonsoft.Json.WindowsPhone 類庫

那麼我們該如何選擇呢?我的建議是如果你的應用中需要解析大量的JSON文件,這時候你可以選擇第三方類庫Newtonsoft.Json.WindowsPhone它提供更多的選擇項給我們,但是如果只是解析個別的JSON文件,建議採用.NET類庫中自帶的JSON序列化類

下面來看看如何序列化JSON文件,我對兩種方法都簡單介紹下,其實用法大致一致,只不過 Newtonsoft.Json.WindowsPhone提供的可選擇項較爲豐富。如下圖,如果我們需要把下述的json字符串變爲一個ReturnResult

 2.1、使用DataContractJsonSerializer

需要將Json序列化爲對象,我們需要一個類的定義,我們可以定義類如下:

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

使用 DataContractJsonSerializer需要添加System.ServiceModel.Web類庫的引用,如果你使用DataContract模式的,我們還需要引用System.Runtime.Serialization類庫的引用。

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

 如果採用第二種方式,只需要將typeofReturnResult)修改爲typeofReturnResult2

在運行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 
還有許多選項,由於篇幅有限,這裏就不繼續說了。

以上的代碼可以在這裏找到

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章