开发者

storing JSON data in db

I'm trying to store data from fb wall into database.

My *.cs code

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");
        }

Which gets posts from fb wall. And then I have an *.aspx file, which "breaks" my wallposts into pieces (objects) or whatever you like to call them.

foreach (Facebook.JSONObject wallItem in wallPosts)
        {
            string wallItemType = wallItem.Dictionary["type"].String;
                //AND SO ON...

What i'm trying to say is that I can access to elements inside fb JSON.

Is there a way i can access to the JSON elements inside *.cs file. Or is there a way I can store elements inside the *.aspx file to db?

And if its possible, I 开发者_如何学编程would like to know how. =)

Thanks for help


Don't use the SDK. Fetch the JSON Data using HttpWebRequest and then Deserialize it using System.Runtime.Serialization.Json.DataContractJsonSerializer. You just have to Create a class with same properties returned in JSON data. See the example below

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);
            }


I'm not familiar with the facebook API and the question isn't too clear, but I assume that the string wallItemType is itself a JSON string, and you wish to parse it.

I'd use the Json.Net library to parse this.

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

you can also use the Json.Net to deserialize to a custom type. This custom type could be mapped to a SQL database using NHibernate.

If you wish to store the entire json string in a database, then you could use a document database such as CouchDB.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜