Как jQuery десериализует JSON? - PullRequest
5 голосов
/ 21 января 2010

Я использую jQuery.ajax (...) для извлечения данных JSON из службы ASP.NET MVC. Когда сервер обнаруживает исключение, я отправляю клиенту статус 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 и просто десериализовать мое исключение, я хотел бы просто использовать тот же JSON-анализатор, который использует jQuery, хотя я не могу найти легко найти информацию о нем.

Может ли кто-нибудь указать мне правильное направление?

Ответы [ 3 ]

6 голосов
/ 21 января 2010

jQuery раньше использовал eval, если я не ошибаюсь. Начиная с версии 1.4 он использует преимущества собственного десериализатора JSON, если он есть (например, в Firefox)

2 голосов
/ 21 января 2010

Я думаю, в javascript, если у вас есть строка json, вы можете использовать eval для получения объекта, то есть:

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

Подробнее об этом можно узнать на http://www.json.org/js.html

0 голосов
/ 22 января 2010

Может быть, это может помочь вам. Я использую его для удаления комментариев и пробелов в моем json:

json = eval( o.responseText
    .replace( /\/\*(.*)\*\/g, ' ' )
    .replace( /([^\:])\/\/[^\n]*\n/g, '$1' )
    .replace( /^\s|\s+|\s$/g, '' ) )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...