我正在尝试将数据从fb wall存储到数据库中。
我的* .cs代码
public ActionResult GetWall()
{
JSONObject wallData = helper.Get("/me/feed");
if (wallData != null)
{
var data = wallData.Dictionary["data"];
List<JSONObject> wallPosts = data.Array.ToList<JSONObject>();
ViewData["Wall"] = wallPosts;
}
return View("Index");
}
从fb wall获取帖子。 然后我有一个* .aspx文件,它将我的墙柱“打破”成碎片(物体)或者你喜欢称之为的任何东西。
foreach (Facebook.JSONObject wallItem in wallPosts)
{
string wallItemType = wallItem.Dictionary["type"].String;
//AND SO ON...
我想说的是我可以访问fb JSON中的元素。
有没有办法可以访问* .cs文件中的JSON元素。 或者有没有办法将* .aspx文件中的元素存储到db?
如果可能,我想知道如何。 =)
感谢您的帮助
答案 0 :(得分:1)
我不熟悉facebook API,问题不太清楚,但我认为字符串wallItemType本身就是一个JSON字符串,你希望解析它。
我会使用Json.Net库来解析它。
using Newtonsoft.Json;
//your code as above
foreach (Facebook.JSONObject wallItem in wallPosts)
{
string wallItemType = wallItem.Dictionary["type"].String;
//I assume wallItemType is a JSON string {"name":"foobar"} or similar
JObject o = JObject.Parse(wallItemType);
string name = (string)o["name"]; //returns 'foobar'
//and so on
您还可以使用Json.Net反序列化为自定义类型。可以使用NHibernate将此自定义类型映射到SQL数据库。
如果您希望将整个json字符串存储在数据库中,则可以使用文档数据库,例如CouchDB。
答案 1 :(得分:1)
不要使用SDK。使用HttpWebRequest获取JSON数据,然后使用System.Runtime.Serialization.Json.DataContractJsonSerializer对其进行反序列化。您只需创建一个在JSON数据中返回相同属性的类。请参阅下面的示例
string Response = Utilities.HttpUtility.Fetch("https://graph.facebook.com/me?access_token=" + AccessToken, "GET", string.Empty);
using (System.IO.MemoryStream oStream = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(Response)))
{
oStream.Position = 0;
return (Models.FacebookUser)new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(Models.FacebookUser)).ReadObject(oStream);
}