如果我从自我主题的webapi返回
Request.CreateResponse(HttpStatusCode.OK, "YAY");
一切都很好..所以我可以这样读:
var responseStr = await Client.Content.ReadAsAsync<string>();
and then make something like "MessageBox.Show(responseStr);
如果我回来
Request.CreateErrorResponse(HttpStatusCode.NotFound, "something went wrong!");
我用同样的方式读出来,甚至用(无关紧要):
Client.Content.ReadAsStringAsync();
字符串未反序列化,并且在尝试解析/读取为字符串时出错。
如果我把它作为对象阅读..它很好......但是我无法执行object.ToString(); 我收到错误..
为什么呢?以及如何解决它?
答案 0 :(得分:11)
我发现有额外的&#39; \&#39;和&#39;&#39;&#39;在返回的JSON中。
所以在我序列化回一个对象之前,我需要删除额外的字符。
e.g。
string jsonString = httpResponseMessage.Content.ReadAsStringAsync()
.Result
.Replace("\\", "")
.Trim(new char[1] { '"' });
List<VwAisItemMaster> vwAisItemMasterList = JsonConvert.DeserializeObject<List<VwAisItemMaster>>(jsonString);
答案 1 :(得分:0)
更好的解决方案是在webapi方法中创建响应时解决问题。 请注意CreateResponse方法中的类型。
IList<VwItemMaster> vwItemMasterList = this.itemMastersGetByUpc(unitOfWork, upc);
HttpResponseMessage httpResponseMessage = this.Request.CreateResponse<IList<VwItemMaster>>(HttpStatusCode.OK, vwItemMasterList);
httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");