最近在寫 Facebook OAuth 授權 + 登入的東西

這篇: 網站利用 Facebook 帳號登入 (使用 OAuth)

在最後取得使用者資料會回傳一段 JSON,但那個 JSON 實在參數爆多的

像下圖 :

Clipboard02  

之前要反序列化都是要先建一個符合 JSON 結構的 Class

假設這樣

public class Member
{
    public Member()
    {
	//
	// TODO: 在這裡新增建構函式邏輯
	//
    }
    public string ID { get; set; }
    public string PWD { get; set; }
    public string Edu { get; set; }
    public string Marriage { get; set; }
    public string Job { get; set; }
}

 

using System.Web.Script.Serialization;
//....
//....
JavaScriptSerializer serializer = new JavaScriptSerializer();
Member obj = serializer.Deserialize<Member>(json);

 

有人可能會說那就用自動產生好了,把JSON直接用產生器產生 Class 

像這個 : http://json2csharp.com/

但是我就是不想貼這麼一大串礙眼的東西到程式碼裡面

所以我就開始找有沒有可以不用先建立 Class 的

因為也有可能以後的專案 JSON 是動態產生的,就是沒有明確結構的那種

..................但其實最主要是懶得寫啦

 

於是我找到了這篇

Using JSON.NET for dynamic JSON parsing

然後稍微測試了一下

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
//....
//....
string URL = "https://graph.facebook.com/me?access_token=" + token;
string JSON = GetWebRequest(URL);
dynamic json = JValue.Parse(JSON);
string name = json.name;

 

快樂的取得JSON後,兩行搞定

但缺點就是 debug 會比較困難

因為......

Clipboard02

 

是 dynamic 

 

提供給懶惰的人參考 

 

 

創作者介紹
創作者 小雕 的頭像
小雕

小雕雕的家

小雕 發表在 痞客邦 留言(0) 人氣()