使用.net JSON序列化JSON时遇到问题
请帮帮一个新手-x 我使用jQuery调用.NETWebAPI进行Get调用。后端是SQL Server 在WebAPI中,我使用实体框架调用存储过程使用.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
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);