【发布时间】:2020-07-07 10:34:08
【问题描述】:
我目前正在努力将收到的 JSON 反序列化为具有 IEnumerable<T> 数据属性的 DTO 对象。使用 ASP.NET Core 3.1 和 System.Text.Json 4.7.0。
下面显示的是 JSON
{
"data": [
{
"alternateId": "2cc688d6-cc51-4501-9320-9e5b6e0b8710",
"name": "random1",
},
{
"alternateId": "e1c14f81-12fa-4ed8-b5ab-e1f4b9f25401",
"name": "random2",
}
],
"pageNumber": 1,
"pageSize": 2,
"resultCount": 2,
"sortColumnName": "Name",
"orderByType": "Ascending"
}
我正在尝试使用这些命令将这些数据反序列化为以下 Dto:
var responseData = await response.Content.ReadAsAsync<PagedResponse<OutputDTO>>();
var responseString = await response.Content.ReadAsStringAsync();
var responseData2 = JsonSerializer.Deserialize<PagedResponse<OutputDTO>>(responseString);
第一个ReadAsAsync 方法正确反序列化除数据之外的所有其他属性。其次,responseData2 反序列化只产生空属性。
Dto 类:
public class PagedResponse<T>
{
public IEnumerable<T> Data { get; }
public PagedResponse()
{
}
public PagedResponse(IEnumerable<T> data)
{
Data = data;
}
public int? PageNumber { get; set; }
public int? PageSize { get; set; }
public int? ResultCount { get; set; }
public string SortColumnName { get; set; }
public OrderByType OrderByType { get; set; }
}
public class OutputDTO
{
public Guid AlternateId { get; set; }
public string Name { get; set; }
}
【问题讨论】:
-
您的
OutputDTO班级是什么样的?反序列化为泛型类有效 -List<T>就是这样一个类
标签: c# json system.text.json