C# 使用RestSharp反序列化JSON响应,结果为空对象
我试图使用RestSharp使用RESTAPI,并将其反序列化到我的用户类 这是我的JSON响应:C# 使用RestSharp反序列化JSON响应,结果为空对象,c#,json,rest,api,restsharp,C#,Json,Rest,Api,Restsharp,我试图使用RestSharp使用RESTAPI,并将其反序列化到我的用户类 这是我的JSON响应: [ { "AdName": "sample string 1", "Email": "sample string 2", "Name": "sample string 3" }, { "AdName": "sample string 1", "Email": "sample s
[
{
"AdName": "sample string 1",
"Email": "sample string 2",
"Name": "sample string 3"
},
{
"AdName": "sample string 1",
"Email": "sample string 2",
"Name": "sample string 3"
}
]
这是API客户端:
public class SamTApi
{
const string BaseUrl = "http://localhost:8097/SamT_WebApi/api/User";
public T Execute<T>(RestRequest request) where T : new()
{
var client = new RestClient();
client.AddHandler("application/json", new JsonDeserializer());
client.BaseUrl = new Uri(BaseUrl);
var response = client.Execute<T>(request);
return response.Data;
}
public List<User> GetUser()
{
var request = new RestRequest(Method.GET);
request.RequestFormat = DataFormat.Json;
return Execute<List<User>>(request);
}
}
因此,当我试图断言:
var api = new SamTApi();
var users = api.GetUser();
Assert.IsNotNull(users, "users != null");
它会导致users=null。我不确定我遗漏了什么。使用Newtonsoft Json nuget包。安装时只需调用:
var destinationObject=JsonConvert.DeserializeObject(json);
我不是RestSharp专家,但我认为您不需要AddHandler
,我认为默认情况下它使用json反序列化。您已经通过调试确认了response.Data
是JSON?您是对的,AddHandler
是冗余的。它实际上根据返回的内容类型选择反序列化器。我发现由于身份验证,我的响应返回null。在这里找到了答案。谢谢你的帮助!
var api = new SamTApi();
var users = api.GetUser();
Assert.IsNotNull(users, "users != null");