operator fun provideDelegate
和HttpContentExtensions.ReadAsAsync<string>
应该用来做什么?
他们似乎做类似的事情,但工作方式奇怪。以下是一些测试及其输出。在某些情况下,将抛出HttpContent.ReadAsStringAsync
,在某些情况下,将输出JSON,但带有附加的转义字符。
我最终在我的代码库中同时使用了这两个函数,但是如果我能理解它们应该如何工作的话,我希望能够与它们对齐。
JsonReaderException
答案 0 :(得分:7)
ReadAsStringAsync
:这是一种基本的“以字符串形式获取内容”方法。因为它只是字符串,所以可以在您扔给它的任何东西上使用。
ReadAsAsync<T>
:这用于将JSON响应反序列化为对象。失败的原因是,返回中的JSON不是单个字符串的有效JSON表示形式。例如,如果您序列化字符串:
var result = JsonConvert.SerializeObject("hello world");
Console.WriteLine(result);
输出为:
"hello world"
请注意如何用双引号将其引起来。如果您尝试将任意JSON直接反序列化为非"....."
格式的字符串,则会抛出您看到的异常,因为它期望JSON以"
开头。