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, '' ) )