从Asp.Net WebApi返回字符串后,JsonConvert DeserializeObject异常

时间:2013-11-27 13:59:57

标签: c# windows-phone-8 asp.net-web-api json-deserialization

我正在使用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“:”啄木鸟“,”日期“:”2013年11月23日6:02:00   PM “ ”总“: ”200“, ”行政法院“: ”假“},{ ”民“: ”9“, ”NomRestau“: ”啄木鸟“, ”日期“:” 2013年11月23日   6时02分00秒   PM “ ”总“: ”200“, ”行政法院“: ”假“},{ ”民“: ”8“, ”NomRestau“: ”啄木鸟“, ”日期“:” 2013年11月23日   6:02:00 PM“,”总计“:”200“,”Etat“:”False“}]”要输入   'System.Collections.ObjectModel.ObservableCollection`1 [RestO.Models.CommandeList]'。   路径'',第1行,第355位。

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

我用它作为模型“”

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 :(得分:0)

在这里猜测,没有看到你如何从WebApi返回这个字符串。如果你的控制器动作方法有返回类型的字符串,这将不起作用。

这个答案显示了返回Json字符串的正确方法: Return a JSON string explicitly from Asp.net WEBAPI?

您需要将其打包到HttpResponseMessage中。