当来自CreateErrorResponse时,HttpResponseMessage.Content.ReadAsStringAsync不反序列化JSON

dar*_*dog 7 c# json

如果我从我自己的主题webapi返回

Request.CreateResponse(HttpStatusCode.OK, "YAY");
Run Code Online (Sandbox Code Playgroud)

一切都很好..所以我可以这样读:

var responseStr = await Client.Content.ReadAsAsync<string>();
and then make something like "MessageBox.Show(responseStr);
Run Code Online (Sandbox Code Playgroud)

如果我回来

Request.CreateErrorResponse(HttpStatusCode.NotFound, "something went wrong!");
Run Code Online (Sandbox Code Playgroud)

我用同样的方式读出来,或者用(不管怎么样):

Client.Content.ReadAsStringAsync();
Run Code Online (Sandbox Code Playgroud)

该字符串未反序列化,并在尝试解析/读取为字符串时出错.

如果我把它作为对象阅读..它没关系...但我无法执行object.ToString(); 我收到错误..

为什么?以及如何解决它?

Car*_*man 14

我发现在返回的JSON中有额外的'\'和'"'.
所以在我序列化回一个对象之前,我需要删除额外的字符.

例如

string jsonString = httpResponseMessage.Content.ReadAsStringAsync()
                                               .Result
                                               .Replace("\\", "")
                                               .Trim(new char[1] { '"' });

List<VwAisItemMaster> vwAisItemMasterList = JsonConvert.DeserializeObject<List<VwAisItemMaster>>(jsonString);
Run Code Online (Sandbox Code Playgroud)