如何将 HttpClient 的 PostAsJsonAsync() 输出转换为用户定义的对象列表
How to convert output of HttpClient's PostAsJsonAsync() into user defined list of object
我正在制作System.Net.Http.HttpClient
class来调用一个终点。此端点需要特定输入和 returns 类型为 Employee ( List<Employee>)
.
的用户定义对象列表
这是我正在使用的代码。
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:7792/");
client.DefaultRequestHeaders.Accept.Clear();
FilterModel payload = new FilterModel();
payload.employeeId= 97050001;
payload.Level= "Manager";
// New code:
HttpResponseMessage response = client.PostAsJsonAsync("api/employee", payload).Result;
if (response.IsSuccessStatusCode)
{
var employee= response.Content.ReadAsStringAsync();
//HOW DO I CONVERT THE OUTPUT INTO LIST<EMPLOYEE>?
Console.Write("---DONE---");
}
Console.ReadKey();
}
我知道这不是调用端点的理想方式,我必须使用 asyc await。我只需要数据,调用可以是同步的也可以是异步的,我想将结果类型转换为列表。
目前我得到一个需要反序列化的字符串。请帮助
您可以按如下方式使用 JsonConvert:
var jsonString= response.Content.ReadAsStringAsync();
var employees = JsonConvert.DeserializeObject<List<Employee>>(jsonString);
希望对您有所帮助!
2020 年更新:
使用这样的东西:
return await response.Content.ReadFromJsonAsync<List<Employee>>();
我正在制作System.Net.Http.HttpClient
class来调用一个终点。此端点需要特定输入和 returns 类型为 Employee ( List<Employee>)
.
这是我正在使用的代码。
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:7792/");
client.DefaultRequestHeaders.Accept.Clear();
FilterModel payload = new FilterModel();
payload.employeeId= 97050001;
payload.Level= "Manager";
// New code:
HttpResponseMessage response = client.PostAsJsonAsync("api/employee", payload).Result;
if (response.IsSuccessStatusCode)
{
var employee= response.Content.ReadAsStringAsync();
//HOW DO I CONVERT THE OUTPUT INTO LIST<EMPLOYEE>?
Console.Write("---DONE---");
}
Console.ReadKey();
}
我知道这不是调用端点的理想方式,我必须使用 asyc await。我只需要数据,调用可以是同步的也可以是异步的,我想将结果类型转换为列表。
目前我得到一个需要反序列化的字符串。请帮助
您可以按如下方式使用 JsonConvert:
var jsonString= response.Content.ReadAsStringAsync();
var employees = JsonConvert.DeserializeObject<List<Employee>>(jsonString);
希望对您有所帮助!
2020 年更新: 使用这样的东西:
return await response.Content.ReadFromJsonAsync<List<Employee>>();