正在解析Json facebook c#



我花了很多小时试图解析JsonArray,我通过graph.facebook获得了它,这样我就可以获得额外的值。我想提取的值是消息和ID。

获得JasonArry不是问题,而且效果很好:

[
    {
    "code":200,
    "headers":[{"name":"Access-Control-Allow-Origin","value":"*"}],
    "body":"{
        "id":"255572697884115_1",
        "from":{
            "name":"xyzk",
            "id":"59788447049"},
        "message":"This is the first message",
        "created_time":"2011-11-04T21:32:50+0000"}"},
    {
    "code":200,
    "headers":[{"name":"Access-Control-Allow-Origin","value":"*"}],
    "body":"{
        "id":"255572697884115_2",
        "from":{
             "name":"xyzk",
             "id":"59788447049"},
        "message":"This is the second message",
        "created_time":"2012-01-03T21:05:59+0000"}"}
]

现在我已经尝试了几种方法来访问消息,但每个方法都以catch结束。。。并抛出异常。

例如:

var serializer = new JavaScriptSerializer();   
var result = serializer.Deserialize<dynamic>(json);
foreach (var item in result)
{
    Console.WriteLine(item.body.message);
}

引发异常:System。集合。通用的字典不包含正文的定义。尽管如此,您可以在下面的屏幕截图中看到,该主体包含定义。

因为我不允许发布图片,你可以在directupload上找到:http://s7.directupload.net/images/120907/zh5xyy2k.png

我没有更多的想法,所以请你帮我。我需要这个项目,私人的,而不是商业的。

也许你可以给我一段代码,这样我就可以继续我的开发了。

到目前为止谢谢

多米尼克

如果您使用Json。Net,你所要做的就是

更换

var serializer = new JavaScriptSerializer();
var result = serializer.Deserialize<dynamic>(json);

带有

dynamic result = JsonConvert.DeserializeObject(json);

仅此而已。

您没有反序列化为强类型对象,因此应用程序抛出异常是正常的。换句话说,反序列化程序不会为您创建Anynymous类。

您的字符串实际上被反序列化为2个对象,每个对象都包含Dictionary<string,object>元素。所以你需要做的是:

var serializer = new JavaScriptSerializer();   
var result = serializer.Deserialize<dynamic>(s);
foreach(var item in result)
{
    Console.WriteLine(item["body"]["message"]);
}

这是一个完整的示例代码:

void Main()
{
        string json =  @"[
    {
    ""code"":200,
    ""headers"":[{""name"":""Access-Control-Allow-Origin"",""value"":""*""}],
    ""body"":{
        ""id"":""255572697884115_1"",
        ""from"":{
            ""name"":""xyzk"",
            ""id"":""59788447049""},
        ""message"":""This is the first message"",
        ""created_time"":""2011-11-04T21:32:50+0000""}},
    {
    ""code"":200,
    ""headers"":[{""name"":""Access-Control-Allow-Origin"",""value"":""*""}],
    ""body"":{
        ""id"":""255572697884115_2"",
        ""from"":{
             ""name"":""xyzk"",
             ""id"":""59788447049""},
        ""message"":""This is the second message"",
        ""created_time"":""2012-01-03T21:05:59+0000""}}
]";
    var serializer = new JavaScriptSerializer();   
    var result = serializer.Deserialize<dynamic>(json);
    foreach(var item in result)
    {
        Console.WriteLine(item["body"]["message"]);
    }
}

打印:

This is the first message
This is the second message

我正在使用这个简单的技术

 var responseTextFacebook = 
 @"{
       "id":"100000891948867",
       "name":"Nishant Sharma",
       "first_name":"Nishant",
       "last_name":"Sharma",
       "link":"https://www.facebook.com/profile.php?id=100000891948867",
       "gender":"male",
       "email":"nihantanu2010u0040gmail.com",
       "timezone":5.5,
       "locale":"en_US",
       "verified":true,
       "updated_time":"2013-06-10T07:56:39+0000"
    }"

我已经申报了类

    public class RootObject
    {
        public string id { get; set; }
        public string name { get; set; }
        public string first_name { get; set; }
        public string last_name { get; set; }
        public string link { get; set; }
        public string gender { get; set; }
        public string email { get; set; }
        public double timezone { get; set; }
        public string locale { get; set; }
        public bool verified { get; set; }
        public string updated_time { get; set; }
    }

现在我正在反序列化

JavaScriptSerializer objJavaScriptSerializer = new JavaScriptSerializer();
RootObject parsedData = objJavaScriptSerializer.Deserialize<RootObject>(responseTextFacebook );

最新更新