當透過 access token 去 facebook 抓取資料時,回傳的資料將以 JSON 的方式編碼,在 C# 裡頭可以用 JavaScriptSerializer 來處理,下面是個很懶惰的處理方式,不需要另外先去設計與宣告一個符合 facebook JSON 格式的 class object 來儲存資料,反正需要的時候再來針對 Key 另外處理即可。
using System.Web.Script.Serialization; using System.Collections; using System.IO; private void ProcessFBJSON() { JavaScriptSerializer jss = new JavaScriptSerializer(); string json; StreamReader sr = new StreamReader(@"C:\file.txt", Encoding.Default); json = sr.ReadToEnd(); sr.Close(); DictionarydicSer = jss.Deserialize >(json); traceDic(dicSer); } private void traceDic(Dictionary dic) { foreach (KeyValuePair p in dic) { if (p.Value is String) { textBox1.Text = textBox1.Text + p.Key + ": " + p.Value + "\r\n"; } else if (p.Value is ArrayList) { textBox1.Text = textBox1.Text + p.Key + ": {\r\n"; traceArrayList((ArrayList)(p.Value)); textBox1.Text = textBox1.Text + "}\r\n"; } else if (p.Value is Dictionary ) { textBox1.Text = textBox1.Text + p.Key + ": [{\r\n"; traceDic((Dictionary )(p.Value)); textBox1.Text = textBox1.Text + "}]\r\n"; } else if (p.Value is int || p.Value is float || p.Value is double) { textBox1.Text = textBox1.Text + p.Key + ": " + p.Value.ToString() + "\r\n"; } else { MessageBox.Show("dictionary: " + p.Value.GetType().ToString()); } } } private void traceArrayList(ArrayList al) { for (int i = 0; i < al.Count; i++) { if (al[i] is String) { textBox1.Text = textBox1.Text + " " + al[i].ToString() + "\r\n"; } else if (al[i] is Dictionary ) { traceDic((Dictionary )(al[i])); } else { MessageBox.Show("arrlist: " + al[i].GetType().ToString()); } } }