【发布时间】:2020-06-12 14:20:29
【问题描述】:
我正在开发服务器端 Blazor 应用程序,但遇到返回以下 JSON 的特定 API 调用的问题。
{
"id": 2,
"status": 1,
"fileName": "Test PDF",
"fileType": "PDF",
"fileBytes": "",
"allSchemes": false,
"dateModified": "2020-06-12T12:32:08.99",
"dateCreated": "2020-06-11T11:32:19.877",
"isNew": false,
"schemes": [
{
"schemeCode": "0185",
"schemeName": null,
"baseCurrency": null
},
{
"schemeCode": "0186",
"schemeName": null,
"baseCurrency": null
}
]
}
但是,当我使用以下代码反序列化时,方案列表始终为 0。其他详细信息按预期填充
var accessToken = await _apiService.RequestNewToken(_httpClient);
_httpClient.SetBearerToken(accessToken);
return await JsonSerializer.DeserializeAsync<SchemeDocument>
(await _httpClient.GetStreamAsync($"api/schemeDocument/{id}"), new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
SchemeDocument 类是
public class SchemeDocument
{
public int Id { get; set; }
public SchemeDocumentStatus Status { get; set; }
[Display(Name = "File Name")]
public string FileName { get; set; }
[Display(Name = "First Type")]
public string FileType { get; set; }
public byte[] FileBytes { get; set; }
[Display(Name = "All Schemes")]
public bool AllSchemes { get; set; }
public DateTime? DateModified { get; set; }
public DateTime DateCreated { get; set; }
[Computed]
public bool IsNew => this.Id == default(int);
[Write(false)]
public List<Scheme> Schemes { get; } = new List<Scheme>();
}
【问题讨论】:
-
等等,你使用的是 Json.Net 还是 System.Text.Json?你的问题被标记为 Json.Net,但代码看起来像 System.Text.Json。它们是不同的序列化程序。
-
问题似乎是针对system.text.json。如果是这样,它就是Can System.Text.Json.JsonSerializer serialize collections on a read-only property? 的副本,答案是当前不是。
-
抱歉。我正在使用 System.Text.Json。我删除了不正确的标签。
标签: c# asp.net blazor blazor-client-side system.text.json