最近在寫 Facebook OAuth 授權 + 登入的東西
這篇: 網站利用 Facebook 帳號登入 (使用 OAuth)
在最後取得使用者資料會回傳一段 JSON,但那個 JSON 實在參數爆多的
像下圖 :
之前要反序列化都是要先建一個符合 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 會比較困難
因為......
是 dynamic
提供給懶惰的人參考
全站熱搜