如何将HttpClient的PostAsJsonAsync()输出转换为用户定义的对象列表

时间:2016-08-31 22:22:13

标签: c# .net async-await asp.net-web-api2 dotnet-httpclient

我正在制作System.Net.Http.HttpClient课来称呼终点。此端点期望某些输入并返回类型为Employee ( List<Employee>)的用户定义对象的List。

这是我正在使用的代码。

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等待。我只需要数据,呼叫可以是同步或异步&amp;我想将结果输入到List中。

目前我得到一个我需要反序列化的字符串。请帮忙

2 个答案:

答案 0 :(得分:2)

您可以使用JsonConvert,如下所示:

var jsonString=  response.Content.ReadAsStringAsync();

var employees = JsonConvert.DeserializeObject<List<Employee>>(jsonString);

希望这有帮助!

答案 1 :(得分:0)

2020年更新: 使用这样的东西:

return await response.Content.ReadFromJsonAsync<List<Employee>>();