ReadAsAsync和JsonConvert之间的区别

本文关键字:区别 之间 JsonConvert ReadAsAsync | 更新日期: 2023-09-27 18:27:21

这适用于所有属性:

string resultAsString = await httpResponseMessage.Content.ReadAsStringAsync();
return await Task.Factory.StartNew(() => JsonConvert.DeserializeObject<ApiData>(resultAsString));

而这只适用于其中的一些:

return await httpResponseMessage.Content.ReadAsAsync<ApiData>();

有什么区别?

ReadAsAsync和JsonConvert之间的区别

前者从流异步读取,然后使用线程池线程将JSON字符串反序列化为对象。

后者从流中异步读取,但将JSON字符串同步转换为对象,在线程上等待从流中的异步读取后恢复。

在内部,这两个方法都将使用Json.NET来解析数据,因为扩展方法HttpContentExtensions.ReadAsAsync<T>将在内部调用使用Json.NET.的JsonMediaTypeFormatter

就我个人而言,我会使用后者,因为我认为在后台线程上执行序列化没有任何好处。但是,请测试您的代码,看看这是否适用于您。