用分页反序列化Json

时间:2018-03-22 12:13:42

标签: asp.net json asp.net-mvc json-deserialization

我使用retailCrm .Net库(https://github.com/retailcrm/api-client-dotnet),在那里我得到了一些用户。所以我接下来以Json格式获得用户的方法是:

Retailcrm.Versions.V4.Client api = new Retailcrm.Versions.V4.Client(product.SiteName, product.AccessToken);
                Dictionary<string, object> filteredOrders = new Dictionary<string, object>
               {
                { "extendedStatus", "complete" },
                { "statusUpdatedAtFrom", DateTime.Now.AddDays(-3).ToString("yyyy-MM-dd HH:mm:ss")},
                { "statusUpdatedAtTo", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}
               };

                Response responseFiltered = api.OrdersList(filteredOrders, 1, 100);

你可以看到方法api.OrdersList这段代码返回我过滤的用户,但是有第二个参数(它是当前页面),它有分页(每个页面都有一些用户数)。现在它是&#34;硬编码&#34;因为我只从第一页获得用户。如何一次性从所有页面获取用户?附:我在模型中去了JSON,而Model有下一个字段。

public class Pagination
    {
        public int limit { get; set; }
        public int totalCount { get; set; }
        public int currentPage { get; set; }
        public int totalPageCount { get; set; }
    }

1 个答案:

答案 0 :(得分:0)

因此,如果你想将你进入用户数组的JSON反序列化,这是不可能的,因为你没有JSON中的数组。

因此,反序列化的正确代码是:

JsonConvert.DeserializeObject<Users>(content);

修正你的班级辩护:

  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列表,ListDetail可以删除,游标不是数组,它是一个对象。