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”,“日期”:“2013 年 11 月 23 日下午 6:02:00”,“总计” :"200","Etat":"False"},{"Num":"9","NomRestau":"啄木鸟","Date":"2013 年 11 月 23 日下午 6:02:00"," 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 个字符。

我用这个作为模型“”

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; }
}
4

1 回答 1

0

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

返回 Json 字符串的正确方法显示在此答案中: Return a JSON string explicit from Asp.net WEBAPI?

您需要将其打包到 HttpResponseMessage 中。

于 2014-08-05T12:55:09.403 回答