Json.net DeserializeObject问题

时间:2015-09-13 02:50:45

标签: c# json json.net

我正在使用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; }
}

我正在使用此代码来使用JSON.NET Deserialize函数: 由于某种原因,结果返回null,请帮助我:(

var result = JsonConvert.DeserializeObject<jsonDeserialize>(jsonString);

3 个答案:

答案 0 :(得分:1)

修正你的班级辩护:

    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包含DataList列表,我可以移除ListDetailcursors不是数组,它是一个对象。

答案 1 :(得分:0)

Omg,我错过了它是来自facebook的JSON并且“解决了”逆转问题。不过,我会把它放在这里,以防万一

首先,快速评论一下,此处的反序列化代码必须看起来像var result = JsonConvert.DeserializeObject <jsonDeserialize> (jsonString);

您的JSON与代码不对应。 如果你想反序列化到jsonDeserialize类,你的json必须看起来像那样 (密切关注[]{}

{
  "ListDetail" : 
  [
   {
     "Cursors":
     [
       {
         "before" : "value",
         "after" : "value"
       }

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

            "cursor1",
            "cursor2"

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

答案 2 :(得分:0)

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

使用它会给你写字结果。 beacuse数据和分页被视为属性,因此您需要在类jsondeserailized中初始化这些属性,而不是列表使用游标,因为您将游标数据存储在分页类中。谢谢