jQuery如何反序列化JSON?

时间:2010-01-21 20:55:16

标签: javascript jquery serialization json

我正在使用jQuery.ajax(...)从ASP.NET MVC服务中检索JSON数据。当服务器遇到异常时,我将400 Bad Request状态发送回客户端并将我的异常作为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,而不是使用从服务器返回的对象。

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

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

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

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

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

http://www.json.org/js.html

上有关于此的更多信息

答案 2 :(得分:0)

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

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