C# 无法使用restsharp将json数组反序列化为对象

C# 无法使用restsharp将json数组反序列化为对象,c#,json,restsharp,C#,Json,Restsharp,以下是我的JSON响应: [ { "Id": 25, "CreateDate": "2020-09-26T12:25:27.917", "Title": "Second TV Repair", "categoryTitle": "Tv Repair", "FirstName": "

以下是我的JSON响应:

     [
{
    "Id": 25,
    "CreateDate": "2020-09-26T12:25:27.917",
    "Title": "Second TV Repair",
    "categoryTitle": "Tv Repair",
    "FirstName": "Sample FirsName",
    "LastName": "Sample LastName"
} ]
这是我的反序列化程序类:

    public class ServicemanHistory
{
    public int Id { get; set; }
    public DateTime CreateDate { get; set; }
    public string Title { get; set; }
    public string categoryTitle { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
以下是我的请求方法:

    public static async Task<List<ServicemanHistory>> getServiceManHistory()
    {
        string url = "https://myapi.net";
        string token = Settings.token;
        var client = new RestClient(url);
        var request = new RestRequest(Method.GET);
        request.AddHeader("Authorization", "Bearer " + token);
        var response = await client.ExecuteAsync<List<ServicemanHistory>>(request);
        Console.WriteLine("**** response is:" + response.Content); 
        if(response.IsSuccessful)
        {
            Console.WriteLine("SUCCESS!!!");
            return response.Data; 
        } else
        {
            return null; 
        }
    }
公共静态异步任务getServiceManHistory()
{
字符串url=”https://myapi.net";
字符串标记=Settings.token;
var client=新的RestClient(url);
var请求=新的重新请求(Method.GET);
请求.AddHeader(“授权”、“承载人”+令牌);
var response=wait client.ExecuteAsync(请求);
Console.WriteLine(****响应为:“+response.Content”);
if(response.issucessful)
{
Console.WriteLine(“SUCCESS!!!”);
返回响应数据;
}否则
{
返回null;
}
}
我在控制台中打印成功,并从response.Content返回json,但response.Data始终为空。我使用NewtonSoft也做了同样的事情,但这并没有解决它。我尝试在反序列化器类中使用JSON数组的包装器,但也没有成功

我尝试使用NewtonSoft:

    public static async Task<List<ServicemanHistory>> getServiceManHistory()
    {
        string url = "https://myapi.net";
        string token = Settings.token;
        var client = new RestClient(url);
        var request = new RestRequest(Method.GET);
        request.AddHeader("Authorization", "Bearer " + token);
        var response = await client.ExecuteAsync(request);
        Console.WriteLine("**** response is:" + response.Content);
        var result = JsonConvert.DeserializeObject<List<ServicemanHistory>>(response.Content); 
        if(response.IsSuccessful)
        {
            Console.WriteLine("SUCCESS!!!");
            return result; 
        } else
        {
            return null; 
        }
    }
公共静态异步任务getServiceManHistory()
{
字符串url=”https://myapi.net";
字符串标记=Settings.token;
var client=新的RestClient(url);
var请求=新的重新请求(Method.GET);
请求.AddHeader(“授权”、“承载人”+令牌);
var response=wait client.ExecuteAsync(请求);
Console.WriteLine(****响应为:“+response.Content”);
var result=JsonConvert.DeserializeObject(response.Content);
if(response.issucessful)
{
Console.WriteLine(“SUCCESS!!!”);
返回结果;
}否则
{
返回null;
}
}
尝试使用NewtonSoft反序列化时,出现以下错误:

    public static async Task<List<ServicemanHistory>> getServiceManHistory()
    {
        string url = "https://myapi.net";
        string token = Settings.token;
        var client = new RestClient(url);
        var request = new RestRequest(Method.GET);
        request.AddHeader("Authorization", "Bearer " + token);
        var response = await client.ExecuteAsync(request);
        Console.WriteLine("**** response is:" + response.Content);
        var result = JsonConvert.DeserializeObject<List<ServicemanHistory>>(response.Content); 
        if(response.IsSuccessful)
        {
            Console.WriteLine("SUCCESS!!!");
            return result; 
        } else
        {
            return null; 
        }
    }
Newtonsoft.Json.JsonSerializationException Message=无法将当前JSON对象(例如{“name”:“value”})反序列化为“System.Collections.Generic.List”类型 o修复此错误,或者将JSON更改为JSON数组(例如[1,2,3]),或者更改反序列化的类型,使其成为可以从JSON对象反序列化的正常.NET类型(例如,不是integer之类的基元类型,也不是数组或列表之类的集合类型)。还可以将JsonObjectAttribute添加到类型中,以强制它从JSON对象反序列化


你能告诉我们你用NewtonSoft做了什么吗?编辑了我的答案并添加了NewtonSoft位。错误清楚地说明了其他情况。如果它实际上是数组,你应该得到类似但不同的错误。端点是否可能基于某些条件同时返回单个元素和数组?如果响应是这样的,则Newtonsoft不会崩溃-demo:。关于您报告的内容有些不合理。您能告诉我们您使用NewtonSoft尝试了什么吗?编辑了我的答案并添加了NewtonSoft位。错误清楚地说明了其他情况。如果它实际上是数组,您应该得到类似但不同的错误。端点是否可能基于某些条件同时返回单个元素和数组?如果响应是这样的,则Newtonsoft不会崩溃-demo:。你所报道的有些东西没有意义。