У меня есть строка (хранящаяся в Redis), и мне нужно десериализовать ее в такой объект:
public class PagedList<T>
{
public int TotalItems { get; }
public int PageNumber { get; }
public int PageSize { get; }
public List<T> List { get; }
//public PagedList() { }
[JsonConstructor]
public PagedList(IEnumerable<T> source, int totalRecord, int pageNumber, int pageSize)
{
TotalItems = totalRecord;
PageNumber = pageNumber;
PageSize = pageSize;
List = source.ToList();
}
//[JsonConstructor]
public PagedList(IQueryable<T> source, int totalRecord, int pageNumber, int pageSize)
{
TotalItems = totalRecord;
PageNumber = pageNumber;
PageSize = pageSize;
List = source.ToList();
}
public int TotalPages => (int)Math.Ceiling(this.TotalItems / (double)this.PageSize);
public PagingHeader GetHeader()
{
return new PagingHeader(this.TotalItems, this.PageNumber, this.PageSize, this.TotalPages);
}
}
Строка:
{
"TotalItems": 63,
"PageNumber": 1,
"PageSize": 2147483646,
"List": [
{
"Id": 6,
"Tendvhc": "Tỉnh Lào Cai",
"Parentid": null,
"Matinh": "10",
"Mahuyen": "000",
"Maxa": "00000",
"Status": 1
}
]
}
Я использую это в своем коде, но получаю ошибку:
JsonConvert.DeserializeObject<T>(jsonString)
Newtonsoft.Json.JsonSerializationException: не удалось найти конструктор для использования с типом GIS.CQRS.Queries.PagedList`1[iNRES.Service.Category.Domain.Models.Dvhc]. Класс должен иметь конструктор по умолчанию, один конструктор с аргументами или конструктор, отмеченный атрибутом JsonConstructor. Путь «TotalItems», строка 1, позиция 14. в Newtonsoft.Json.Serialization.JsonS
Как я могу работать со сложным объектом, как указано выше?
JsonPropertyAttribute name
для изменения имени свойства при десериализации ref. Действительная строка Json должна быть хорошим дополнением, чтобы она была минимально воспроизводимым примером - person Drag and Drop   schedule 30.03.2021[JsonConstructor] public PagedList(List<T> List, int TotalItems, int PageNumber, int PageSize) { this.TotalItems = TotalItems; this.PageNumber = PageNumber; this.PageSize = PageSize; this.List = List; }
- person vuongdingo   schedule 30.03.2021[JsonConstructor] public PagedList(List<T> list, int totalItems, int pageNumber, int pageSize) { this.TotalItems = totalItems; this.PageNumber = pageNumber; this.PageSize = pageSize; this.List = list; }
- person vuongdingo   schedule 30.03.2021