JsonSerializer.Deserialize 未在对象中填充列表

JsonSerializer.Deserialize not populating list within object

我正在开发服务器端 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 class 是

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>();
}

您的列表 属性 需要 public setter。

这是我仍然使用 Newtonsoft JSON 的原因之一,因为它让我拥有私人 setters。