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);

上面两种代码的结果一样,如下图:

 

posted @ 2024-01-29 09:25  ziff123  阅读(124)  评论(0编辑  收藏  举报