我有以下课程:
public class PagedClientModelList<T> : List<T>
{
public int TotalCount { get; set; }
public int PageSize { get; set; }
public int CurrentPage { get; set; }
public int TotalPages { get; set; }
}
两个不同的 json 字符串将被反序列化为该对象的一个实例:
一个 api GET 请求的 http 内容将被反序列化为 List<T>
api GET 请求的“X-Pagination”标头将反序列化为派生类型的 4 个属性 PagedClientModelList<T>
反序列化为List<T>没问题:
var result = JsonConvert.DeserializeObject<PagedClientModelList<Person>>
(httpResponseMessage.Content.ReadAsStringAsync().Result);
对于 json 字符串:
[
{
"id": 1,
"name": "Hans"
},
{
"id": 2,
"name": "Peter"
},
{
"id": 3,
"name": "Max"
}
]
但是,当我想反序列化标头(非数组 json)时,jsonConverter 想再次反序列化List<T>并抛出异常,但我需要将其序列化到子类PagedClientModelList<T>:
if (httpResponseMessage.Headers.TryGetValues("X-Pagination", out var xPagination))
{
result = JsonConvert.DeserializeObject<PagedClientModelList<Person>>(xPagination.First());
// throws exception: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type [... because it requires json array]
}
对于相应的标头值:
{
"totalCount": 12,
"pageSize": 3,
"currentPage": 1,
"totalPages": 4
}
如何将非数组 json 反序列化为实现 的子类List<T>?
GCT1015
相关分类