C# 阅读facebook页面时出现json问题

C# 阅读facebook页面时出现json问题,c#,json.net,C#,Json.net,我试图用Json阅读facebook的墙,但我得到了错误- 无法访问Newtonsoft.Json.Linq.JProperty上的子值。有什么想法吗 string pageInfo = client.DownloadString(string.Format("https://graph.facebook.com/Pokerfreerollpass?access_token={0} ", accessToken)); string pagePosts = client.DownloadStrin

我试图用Json阅读facebook的墙,但我得到了错误- 无法访问Newtonsoft.Json.Linq.JProperty上的子值。有什么想法吗

string pageInfo = client.DownloadString(string.Format("https://graph.facebook.com/Pokerfreerollpass?access_token={0} ", accessToken));
string pagePosts = client.DownloadString(string.Format("https://graph.facebook.com/Pokerfreerollpass/posts?access_token={0} ", accessToken));
//Console.Write(pagePosts);
var result = JsonConvert.DeserializeObject<dynamic>(pagePosts);
foreach (var item in result)
{
    Console.WriteLine(item["body"]["message"].ToString());
}
代码:现在是

 client.DownloadString(string.Format("https://graph.facebook.com/Pokerfreerollpass?access_token={0} ", accessToken));
            string pagePosts = client.DownloadString(string.Format("https://graph.facebook.com/Pokerfreerollpass/posts?access_token={0} ", accessToken));
            //Console.Write(pagePosts);
            var result = JsonConvert.DeserializeObject<dynamic>(pagePosts);
           //// dynamic message="";
            foreach (var item in result.Children())
            {
                result = JsonConvert.DeserializeObject<RootObject>(item.ToString());

                var message = result.message.ToString();
                Console.Write(message);
            }

       //     Console.Write(message.ToString());


            Console.Read();
        }
        public class From
        {
            public string id { get; set; }
            public string category { get; set; }
            public string name { get; set; }
        }

        public class Privacy
        {
            public string value { get; set; }
        }

        public class Datum
        {
            public string name { get; set; }
            public string id { get; set; }
        }

        public class Likes
        {
            public List<Datum> data { get; set; }
        }

        public class RootObject
        {
            public string id { get; set; }
            public From from { get; set; }
            public string message { get; set; }
            public Privacy privacy { get; set; }
            public string type { get; set; }
            public string status_type { get; set; }
            public string created_time { get; set; }
            public string updated_time { get; set; }
            public Likes likes { get; set; }
        }
    }
}
client.DownloadString(string.Format(“https://graph.facebook.com/Pokerfreerollpass?access_token={0}(accessToken));
string pagePosts=client.DownloadString(string.Format(“https://graph.facebook.com/Pokerfreerollpass/posts?access_token={0}(accessToken));
//控制台。写入(pagePosts);
var result=JsonConvert.DeserializeObject(pagePosts);
////动态消息=”;
foreach(result.Children()中的变量项)
{
结果=JsonConvert.DeserializeObject(item.ToString());
var message=result.message.ToString();
控制台。写入(消息);
}
//Console.Write(message.ToString());
Console.Read();
}
公共课
{
公共字符串id{get;set;}
公共字符串类别{get;set;}
公共字符串名称{get;set;}
}
公共类隐私
{
公共字符串值{get;set;}
}
公共类数据
{
公共字符串名称{get;set;}
公共字符串id{get;set;}
}
公众阶级喜欢
{
公共列表数据{get;set;}
}
公共类根对象
{
公共字符串id{get;set;}
来自{get;set;}的公共
公共字符串消息{get;set;}
公共隐私{get;set;}
公共字符串类型{get;set;}
公共字符串状态_类型{get;set;}
创建的公共字符串\u time{get;set;}
公共字符串已更新_time{get;set;}
公众喜欢{get;set;}
}
}
}

我没有看到
主体
属性。尝试改用
item[“message”].ToString()

如果您有json,您可以为此创建映射类。下面将告诉你如何做到这一点

var result = JsonConvert.DeserializeObject<RootObject>(item.ToString());

var message = result.message; 
var result=JsonConvert.DeserializeObject(item.ToString());
var message=result.message;
从中为给定json生成类

来自的公共类
{
公共字符串id{get;set;}
公共字符串类别{get;set;}
公共字符串名称{get;set;}
}
公共类隐私
{
公共字符串值{get;set;}
}
公共类数据
{
公共字符串名称{get;set;}
公共字符串id{get;set;}
}
公众阶级喜欢
{
公共列表数据{get;set;}
}
公共类根对象
{
公共字符串id{get;set;}
来自{get;set;}的公共
公共字符串消息{get;set;}
公共隐私{get;set;}
公共字符串类型{get;set;}
公共字符串状态_类型{get;set;}
创建的公共字符串\u time{get;set;}
公共字符串已更新_time{get;set;}
公众喜欢{get;set;}
}
更新:
foreach(result.Children()中的变量项)
{
var result=JsonConvert.DeserializeObject(item.ToString());
var message=result.message;
}

对我来说仍然不起作用,我在'var result1=JsonConvert.DeserializeObject(pagePosts.ToString())上得到一个错误;var message=result1.message;`Console.Write(message.ToString());错误对象引用未设置为对象的实例。是否可以使用
pagePosts.ToString()
的内容更新问题?这些类仅为您在问题中给出的json字符串生成。@KristapsSoloveiko:确保您的
foreach
循环与第二个示例中的类似:
foreach(result.Children()中的var项)
var result = JsonConvert.DeserializeObject<RootObject>(item.ToString());

var message = result.message; 
public class From
{
    public string id { get; set; }
    public string category { get; set; }
    public string name { get; set; }
}

public class Privacy
{
    public string value { get; set; }
}

public class Datum
{
    public string name { get; set; }
    public string id { get; set; }
}

public class Likes
{
    public List<Datum> data { get; set; }
}

public class RootObject
{
    public string id { get; set; }
    public From from { get; set; }
    public string message { get; set; }
    public Privacy privacy { get; set; }
    public string type { get; set; }
    public string status_type { get; set; }
    public string created_time { get; set; }
    public string updated_time { get; set; }
    public Likes likes { get; set; }
}
foreach (var item in result.Children())
{
    var result = JsonConvert.DeserializeObject<RootObject>(item.ToString());

    var message = result.message; 
}