这适用于所有
属性:
string resultAsString = await httpResponseMessage.Content.ReadAsStringAsync();
return await Task.Factory.StartNew(() => JsonConvert.DeserializeObject<ApiData>(resultAsString));
而这只适用于其中一些:
return await httpResponseMessage.Content.ReadAsAsync<ApiData>();
有什么不同?
前者从流中异步读取,然后使用线程池线程将JSON字符串反序列化到对象.
后者从流中异步读取,但是在等待从流的异步读取之后恢复的线程上同步地将JSON字符串转换为对象.
在内部,这两种方法都将利用Json.NET来解析数据,扩展方法是HttpContentExtensions.ReadAsAsync< T>将内部调用使用Json.NET的JsonMediaTypeFormatter
.
就个人而言,我会使用后者,因为我看到在后台线程上执行序列化没有任何好处.但是,测试你的代码,看看是否适用于你.