无法将 HttpResponseMessage 反序列化为模型对象

Unable to Deserialize HttpResponseMessage to Model Object

  1. 获取Response的代码:

    public async Task<List<RepositoryListResponseItem>> MakeGitRequestAsync<T>(string url)
    {
        List<RepositoryListResponseItem> res = new List<RepositoryListResponseItem>();
        using (var httpClient = new HttpClient())
        {
            httpClient.DefaultRequestHeaders.Add("Accept", "application/vnd.github.v3+json");
            httpClient.DefaultRequestHeaders.Add("User-Agent", "HttpFactoryTesting");
            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    
    
            using (HttpResponseMessage response = await httpClient.GetAsync(url))
            {
                if (response.IsSuccessStatusCode == true)
                {
                    string apiResponse = response.Content.ReadAsStringAsync().Result;
                    res = JsonConvert.DeserializeObject<List<RepositoryListResponseItem>>(apiResponse);
                }
            }
    
        }
        return res;
    }
    
  2. 模型对象:

    public class RepositoryListResponseItem
    {
        [Description("Repo Name")]
        [JsonPropertyName("full_name")]
        public string RepoName { get; set; }
    
        [Description("Repo Link")]
        [JsonPropertyName("html_url")]
        public string RepoLink { get; set; }
    }
    
    1. HttpWebResponse 在我得到字符串后 (string apiResponse = response.Content.ReadAsStringAsync().Result)

      [{\"id\":114995175,\"node_id\":\"MDEwOlJlcG9zaXRvcnkxMTQ5OTUxNzU=\",\"name\":\"AlcoholConsumption\",\"full_name\":\"ihri/AlcoholConsumption\",\....
      

我有 C#.NET 服务,我在其中使用 GitHub API。我能够成功获取数据,但不幸的是格式不正确(请检查步骤 3)。 我无法将响应转换为我的自定义对象)

这里,准确地说,响应是JSONarray

根据您的 Json 结果,您的模型对象似乎需要像这样:

public class RepositoryListResponseItem
{
    public int id { get; set; }
    public string node_id { get; set; }
    public string name { get; set; }
    public string full_name { get; set; }
}

此外,我强烈建议您使用 await 关键字而不是 Result:

string apiResponse = await response.Content.ReadAsStringAsync();

在对象类型

中使用您的自定义class
var jsonString = responseMessage.Content.ReadAsStringAsync().Result;
var myObject = JsonConvert.DeserializeObject<object>(jsonString);