ReadAsAsync <string>和ReadAsStringAsync应该用于什么?

时间:2018-06-28 00:09:55

标签: c# asp.net json.net

operator fun provideDelegateHttpContentExtensions.ReadAsAsync<string>应该用来做什么?

他们似乎做类似的事情,但工作方式奇怪。以下是一些测试及其输出。在某些情况下,将抛出HttpContent.ReadAsStringAsync,在某些情况下,将输出JSON,但带有附加的转义字符。

我最终在我的代码库中同时使用了这两个函数,但是如果我能理解它们应该如何工作的话,我希望能够与它们对齐。

JsonReaderException

1 个答案:

答案 0 :(得分:7)

ReadAsStringAsync:这是一种基本的“以字符串形式获取内容”方法。因为它只是字符串,所以可以在您扔给它的任何东西上使用。

ReadAsAsync<T>:这用于将JSON响应反序列化为对象。失败的原因是,返回中的JSON不是单个字符串的有效JSON表示形式。例如,如果您序列化字符串:

var result = JsonConvert.SerializeObject("hello world");
Console.WriteLine(result);

输出为:

"hello world"

请注意如何用双引号将其引起来。如果您尝试将任意JSON直接反序列化为非"....."格式的字符串,则会抛出您看到的异常,因为它期望JSON以"开头。