使用.net JSON序列化JSON时遇到问题

使用.net JSON序列化JSON时遇到问题,json,jquery,asp.net-web-api,json.net,getjson,Json,Jquery,Asp.net Web Api,Json.net,Getjson,请帮帮一个新手-x 我使用jQuery调用.NETWebAPI进行Get调用。后端是SQL Server 在WebAPI中,我使用实体框架调用存储过程 var cat = ent.GetCategories(); return Json.Encode(cat); 这会获取数据,但返回到浏览器,数据看起来像这样,它不会插入我的下拉列表。我猜这和逃跑的反斜杠有关。我该如何解决这个问题 "[\"Housing\",\"Jobs\",\"For Sale\",\"Community\",\"Se

请帮帮一个新手-x

我使用jQuery调用.NETWebAPI进行Get调用。后端是SQL Server

在WebAPI中,我使用实体框架调用存储过程

 var cat = ent.GetCategories();

 return Json.Encode(cat);
这会获取数据,但返回到浏览器,数据看起来像这样,它不会插入我的下拉列表。我猜这和逃跑的反斜杠有关。我该如何解决这个问题

"[\"Housing\",\"Jobs\",\"For Sale\",\"Community\",\"Services\"]"
在这种情况下,它太简单了。试试下面这样

jQuery.ajax({ 
    type: "GET"  //or POST,
    dataType: "json", 
    url: "your url",
    success: function(data) {   
        //data returns ["Housing","Jobs","For Sale","Community","Services"]
    }
}); 
一个

通过设置
数据类型:“json”
可以告诉jQuery解析 以JSON形式接收数据,因此数据被传递到success()函数 作为Javascript数组


问题是您正在双重序列化结果。Web API为您进行序列化,因此您无需调用
Json.Encode()
。相反,只需让您的API控制器方法返回
cat

如果返回的数据类似于
“[\'Housing\”、\'Jobs\”、\'For Sale\”、\'Community\”、\'Services\””
在填充下拉列表之前,您可以执行以下操作:

var escaped = "[\"Housing\",\"Jobs\",\"For Sale\",\"Community\",\"Services\"]";
var result = $("<div />").html(escaped).text();

最初,我没有编码,我返回了cat。但在浏览器端,我收到了错误消息:“ExceptionMessage”:“ObjectContent`1'类型未能序列化内容类型'application/json;”的响应体。。。所以我试着像上面那样对它进行编码。然后我没有得到错误消息,但是返回的消息现在看起来像上面一样,我不能像通常那样在回调中使用返回的数据。不确定这是否重要,但我有自己的webAPI函数:public dynamic Get(字符串过滤器)。。。动态返回类型重要吗?好吧,我尝试了一些不同的方法,效果很好。但通话速度非常慢(4秒以上)。在webApi中,我声明了一个列表。使用实体框架,我调用storeproc,并通过foreach循环运行返回的对象。对于找到的每个项目,我都将其添加到“列表”中。然后返回“list”(没有任何直接的json编码)。这是可行的,但速度非常慢。使用JQuery使用.net webAPI访问存储过程以从SQL Server获取数据,这是一种糟糕的方法吗?如果您从API方法返回
列表
,那么这就是您应该声明为方法返回类型的方法(
IEnumerable
也应该起作用)。当类型已知时,我不会将返回类型设置为动态。序列化字符串的短列表本身不应该很慢。我一直在我的Web API代码中这样做,一点问题也没有。您确定性能问题不在您的存储过程或正在执行的其他操作中吗?
var jsArr = $.parseJSON(result);