net8 对接webapi接口通过 GetFromJsonAsAsyncEnumerable方法直接得到对象,无需进行反序列化
调用 API 直接获取到对象
现在有一个接口返回如下图中的数据:
如果是在 8 以前的版本中获取该接口的数据,需要先获取到接口内容,然后进行反序列化,代码如下
const string RequestUri = "http://localhost:5145/user"; using var client = new HttpClient(); var stream =await client.GetStreamAsync(RequestUri); //反序列化 var users = JsonSerializer.DeserializeAsyncEnumerable<UserInfo>(stream); await foreach(UserInfo user in users) { Console.WriteLine($"姓名:{user.userName}"); } Console.ReadKey(); public record UserInfo(string userName);
在版本 8 中可以直接调用 GetFromJsonAsAsyncEnumerable 方法直接得到对象,无需进行反序列化:
const string RequestUri = "http://localhost:5145/user"; using var client = new HttpClient(); IAsyncEnumerable<UserInfo> users = client.GetFromJsonAsAsyncEnumerable<UserInfo>(RequestUri); await foreach (UserInfo user in users) { Console.WriteLine($"姓名: {user.userName}"); } Console.ReadKey(); public record UserInfo(string userName);
上面两种代码的结果一样,如下图: