jQuery如何反序列化JSON?

我正在使用jQuery.ajax(…)从ASP.NET MVC服务中检索JSON数据。 当服务器遇到exception时,我将400 Bad Request状态发送回客户端并将我的exception作为JsonResult发送:

Response.StatusCode = 400; return Json(new { ex.Message, ex.StackTrace }); 

这是我的jQuery代码:

 $.ajax( { type: "POST", url: deleteUrl, dataType: "json", data: { dataItems: dataItems, toJSON: true }, success: function(msg) { alert(msg[i].dataItem); }, error: function(request, status, error) { alert(request.responseText); } }); 

我的ASP.NET代码将我发送到我的JavaScript代码的错误部分,而错误块只允许我读取request.responseText而不是使用从服务器返回的对象。

现在,我不想在json_parse之类的内容中添加另一个JavaScript 包 ,只是简单地反序列化我的Exception,我想简单地利用jQuery使用的相同JSON解析器,尽管我找不到容易找到的信息。

有人能指出我正确的方向吗?

如果我没有弄错的话,jQuery过去常常使用eval 。 从1.4开始,它会利用原生JSON解串器(如果有的话)(例如,Firefox中有一个)

我想在javascript中,如果你有一个json字符串,你可以使用eval来获取一个对象,即:

 var myObject = eval('(' + myJSONtext + ')'); 

有关这方面的更多信息, 请访问http://www.json.org/js.html

也许这可以帮到你。 我用它来删除我的json中的注释和空格:

 json = eval( o.responseText .replace( /\/\*(.*)\*\/g, ' ' ) .replace( /([^\:])\/\/[^\n]*\n/g, '$1' ) .replace( /^\s|\s+|\s$/g, '' ) )