using System.Collections.Generic;
public string Name { get; set;}
public int? Age {get; set;}
public string Title { get; set; }
public abstract class PaginatedData<T>
public abstract IEnumerable<T> Data { get; set; }
public int Count { get; set;}
public int CurrentPage { get; set;}
public int Offset { get; set;}
public int RowsPerPage { get; set;}
public int? PreviousPage { get; set;}
public int? NextPage { get; set;}
public sealed class PaginatedUsers : PaginatedData<MyUser>
[JsonProperty(PropertyName="Users")]
public override IEnumerable<MyUser> Data { get; set;}
public sealed class PaginatedItems : PaginatedData<MyItem>
public override IEnumerable<MyItem> Data { get; set;}
public static void Main()
""Users"": [{ ""Name"": ""Petr"", ""Age"": 30 }], ""Count"": 100, ""CurrentPage"": 98, ""Offset"": 20,
""RowsPerPage"": 19, ""PreviousPage"": 97, ""NextPage"": 99
var paginated_users = JsonConvert.DeserializeObject<PaginatedUsers>(json_str);
Console.WriteLine(paginated_users.Count);
foreach (var user in paginated_users.Data)
Console.WriteLine($"{user.Name} {user.Age}");
Console.WriteLine(JsonConvert.SerializeObject(paginated_users));