ReadAsAsync和JsonConvert之间的区别

Sen*_*enj 13 c# json json.net

这适用于所有属性:

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

虽然这只适用于其中一些:

return await httpResponseMessage.Content.ReadAsAsync<ApiData>();
Run Code Online (Sandbox Code Playgroud)

有什么不同?

Yuv*_*kov 11

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

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

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

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