【发布时间】:2018-11-27 12:53:40
【问题描述】:
我正在尝试使用 RestSharp 使用 REST API 并反序列化到我的 User 类。
这是我的 JSON 响应:
[
{
"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);
}
}
这是我的用户类:
public class User
{
public string AdName { get; set; }
public string Email { get; set; }
public string Name { get; set; }
}
public class UserResponse
{
public User User { get; set; }
}
所以当我尝试断言时:
var api = new SamTApi();
var users = api.GetUser();
Assert.IsNotNull(users, "users != null");
它导致 users = null。我不确定我错过了什么。
【问题讨论】:
-
我不是 RestSharp 专家,但我认为您不需要
AddHandler,我认为它默认使用 json 反序列化。您已经通过调试确认response.Data是JSON? -
你是对的,
AddHandler是多余的。它实际上根据返回的 Content-Type 选择反序列化器。我发现由于身份验证,我的响应返回 null。在这里找到了答案。 link感谢您的帮助!
标签: c# json rest api restsharp