C# Json.net反序列化对象问题

C# Json.net反序列化对象问题,c#,json,json.net,C#,Json,Json.net,我正在使用JSON.Net尝试反序列化来自facebook的一些响应。下面是我正在读取的数据的快照: { "data": [ { "id": "123" }, { "id": "234" } ], "paging": { "cursors": { "before": "xxx", "after": "

我正在使用JSON.Net尝试反序列化来自facebook的一些响应。下面是我正在读取的数据的快照:

 {
      "data": [
        {
          "id": "123"
        },
        {
          "id": "234"
        }
      ],
      "paging": {
        "cursors": {
          "before": "xxx",
          "after": "xxx"
        },
        "next": "xxx"
      }
 }
课程:

class jsonDeserialize
{
    public List<ListDetail> ListDetail { get; set; }
}

public class DataList
{
    public string id { get; set; }
}

public class Paging
{
    public List<string> cursors { get; set; }
    public string next { get; set; }
}
public class Cursors
{
    public string before { get; set; }
    public string after { get; set; }
}

public class ListDetail
{
    public List<Cursors> Cursors { get; set; }
    public List<Paging> Articles { get; set; }
    public List<DataList> DataList { get; set; }
}
类jsonDeserialize { 公共列表ListDetail{get;set;} } 公共类数据列表 { 公共字符串id{get;set;} } 公共类分页 { 公共列表游标{get;set;} 公共字符串next{get;set;} } 公共类游标 { {get;set;}之前的公共字符串 {get;set;}之后的公共字符串 } 公共类列表详细信息 { 公共列表游标{get;set;} 公共列表项目{get;set;} 公共列表数据列表{get;set;} } 我使用以下代码来使用JSON.NET反序列化函数: 由于某些原因,结果返回null,请帮助我:(

var result=JsonConvert.DeserializeObject(jsonString);

修复您的类防御:

    class jsonDeserialize
    {
        public List<DataList> data { get; set; }
        public Paging paging { get; set; }
    }

    public class DataList
    {
        public string id { get; set; }
    }

    public class Paging
    {
        public Cursors cursors { get; set; }
        public string next { get; set; }
    }
    public class Cursors
    {
        public string before { get; set; }
        public string after { get; set; }
    }
类jsonDeserialize { 公共列表数据{get;set;} 公共分页{get;set;} } 公共类数据列表 { 公共字符串id{get;set;} } 公共类分页 { 公共游标游标{get;set;} 公共字符串next{get;set;} } 公共类游标 { {get;set;}之前的公共字符串 {get;set;}之后的公共字符串 }
jsonDeserialize
包含数据列表的列表,
ListDetail
可以删除吗,
cursors
不是数组,而是对象。

Omg,我错过了facebook的JSON,并“解决”了相反的问题。不过,为了以防万一,我会把它保留在这里

首先,请注意,这里的反序列化代码必须看起来像
var result=JsonConvert.DeserializeObject
(jsonString);

您的JSON与代码不对应。 如果您想反序列化为jsonDeserialize类,您的json必须是这样的 (密切关注
[]
{}

类jsonDeserialize { 公共列表数据{get;set;} 公共分页{get;set;} } 公共类数据列表 { 公共字符串id{get;set;} } 公共类分页 { 公共游标游标{get;set;} 公共字符串next{get;set;} } 公共类游标 { {get;set;}之前的公共字符串 {get;set;}之后的公共字符串 } var result=JsonConvert.DeserializeObject(jsonformat.Substring(0,jsonformat.Length));
使用它会给你写结果。因为数据和分页被视为属性,所以你需要初始化类JSONDESerialized中的那些属性,而不是列表使用游标,因为你在分页类中存储游标数据。谢谢

    class jsonDeserialize
    {
        public List<DataList> data { get; set; }
        public Paging paging { get; set; }
    }

    public class DataList
    {
        public string id { get; set; }
    }

    public class Paging
    {
        public Cursors cursors { get; set; }
        public string next { get; set; }
    }
    public class Cursors
    {
        public string before { get; set; }
        public string after { get; set; }
    }
{
  "ListDetail" : 
  [
   {
     "Cursors":
     [
       {
         "before" : "value",
         "after" : "value"
       }

      ],
      "Articles":
      [
        {
          "Cursors":
          [

            "cursor1",
            "cursor2"

          ],
          "next" : "somenext"
        }
      ],
      "DataList":
      [
        {
          "id" : "someid"
        },
        {
          "id" : "someid2"
        }
      ]
   }
  ]
}
 class jsonDeserialize
    {

        public List<DataList> data { get; set; }
        public Paging paging { get; set; }

    }

    public class DataList
    {
        public string id { get; set; }
    }

    public class Paging
    {
        public Cursors cursors { get; set; }
        public string next { get; set; }
    }
    public class Cursors
    {
        public string before { get; set; }
        public string after { get; set; }
    }

var result=JsonConvert.DeserializeObject<jsonDeserialize>(jsonformat.Substring(0,jsonformat.Length));