AspNet WebApi从返回的字符串进行JsonConvert.DeserializeObject时抛出异常

3
我正在使用WebApi返回一个JSON字符串,如下代码所示的已被注释的返回字符串。
private async void setDataContext()
    {
        var str = (await HttpVerbs.HttpGet("commandelist/1"));
        //"[{\"Num\":\"10\",\"NomRestau\":\"Woodpecker\",\"Date\":\"11/23/2013 6:02:00 PM\",\"Total\":\"200\",\"Etat\":\"False\"},{\"Num\":\"9\",\"NomRestau\":\"Woodpecker\",\"Date\":\"11/23/2013 6:02:00 PM\",\"Total\":\"200\",\"Etat\":\"False\"},{\"Num\":\"8\",\"NomRestau\":\"Woodpecker\",\"Date\":\"11/23/2013 6:02:00 PM\",\"Total\":\"200\",\"Etat\":\"False\"}]";

        cmdList = (ObservableCollection<CommandeList>)JsonConvert.DeserializeObject(str, typeof(ObservableCollection<CommandeList>));
        Listu.DataContext = cmdList;
    }

以下是 HttpVerbs 类

public class HttpVerbs
{

    public static async Task<string> HttpGet(string url)
    {
        var httpClient = new HttpClient();

        return (await httpClient.GetStringAsync("http://{myWebSite}/api/" + url));
    }
}
  • 如果我直接将被注释的 Json 字符串分配给“str”(变量),一切都正常!但是,如果我尝试从我的 WebApi 中获取它(就像我在这个代码中所做的那样),就会抛出异常

{Newtonsoft.Json.JsonSerializationException: 将值“[{"Num":"10","NomRestau":"Woodpecker","Date":"11/23/2013 6:02:00 PM","Total":"200","Etat":"False"},{"Num":"9","NomRestau":"Woodpecker","Date":"11/23/2013 6:02:00 PM","Total":"200","Etat":"False"},{"Num":"8","NomRestau":"Woodpecker","Date":"11/23/2013 6:02:00 PM","Total":"200","Etat":"False"}]”转换为类型“System.Collections.ObjectModel.ObservableCollection`1[RestO.Models.CommandeList]”时出错。路径' ',行 1,位置 355。

备注:我的字符串包含 355 个字符。

我将此用作 Model ""

public class CommandeList
{
    public string Num { get; set; }
    public string NomRestau { get; set; }
    public string Date { get; set; }
    public string Total { get; set; }
    public string Etat { get; set; }
}
1个回答

0

仅凭猜测,没有看到您如何从WebApi返回此字符串。如果您的控制器操作方法具有字符串返回类型,则无法正常工作。

正确的返回Json字符串的方法在这个答案中展示: 从Asp.net WEBAPI显式地返回JSON字符串?

您需要将其打包到HttpResponseMessage中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接