因爲獲取受權返回的是以下格式的JSON字符串:學習
1 { 2 ‘code’: A0000, 3 ‘data’: 4 { 5 ‘access_token’: ACCESS_TOKEN, // 訪問令牌 6 ‘expires_in’ : 60, // 過時時間 7 ‘refresh_token’: REFRESH_TOKEN, // 刷新令牌 8 } 9 }
那麼接下來就要解析這個字符串來獲取相應的信息,好比狀態碼和訪問令牌。ui
在.NET 環境下 解析JSON有多種方式。能夠本身手寫一個簡單的解析程序,固然最方便的仍是利用現成的庫。我採用的是System.Web.Extensions程序集中的JavaScriptSerializer類。spa
以前沒接觸過JSON,只知道跟XML相似。知乎上葉大有個利用C語言實現一個簡單的JSON解析器的系列文章,以前一直說得好好學習一下,然而一直停留在第一篇。果真,對於我來講學習最好的動力是必需要用了,纔會主動去學。找了幾個示例代碼瀏覽了一下,而後本身動手也算有模有樣的把目的實現了,也不知道這個套路對不對。code
首先,根據這個JSON字符串構建了一個對應的類:對象
1 /// <summary> 2 /// 受權返回結果類 3 /// </summary> 4 [Serializable] 5 [DataContract] 6 public class AuthorResult 7 { 8 9 [DataMember(IsRequired = false)] 10 public Token data { get; set; } 11 12 [DataMember(IsRequired = false)] 13 public string code { get; set; } 14 15 [DataMember(IsRequired = false)] 16 public string msg { get; set; } 17 18 19 }
AuthorResult類包含3個屬性:data、code、msg。其中code表示狀態碼,msg表示提示信息,data是自定義的Token類包含令牌、過時時間、刷新令牌屬性,定義以下:blog
[Serializable]和[DataContract]是我參考別人代碼寫上的,貌似不寫也能夠
1 /// <summary> 2 /// 令牌類 3 /// </summary> 4 public class Token 5 { 6 public string access_token { set; get; } 7 8 9 public int expires_in { set; get; } 10 11 12 public string refresh_token { set; get; } 13 14 }
access_token、expires_in、refresh_token分別表示令牌、過時時間、刷新令牌。token
對應的類構建完畢後,就能夠使用JavaScriptSerializer類的Deserialize<T>()泛型方法來反序列化該對象。ip