Как вы предоставляете данные ответов JSON в .NET? - PullRequest
7 голосов
/ 07 мая 2009

Каков идеальный способ предоставления данных ответов JSON без использования сторонних инструментов?

Я думал о том, чтобы иметь страницу приложения ASPX, чтобы просто вернуть строковый ответ json. Есть идеи?

Ответы [ 4 ]

10 голосов
/ 07 мая 2009

Самый простой способ - создать метод с атрибутом [WebMethod], и ответ автоматически будет сериализован в JSON. Попробуйте сами:

[WebMethod]
public static string GetDateTime()
{
    return DateTime.Now.ToString();
}

И URL вызова Ajax будет:

Page.aspx/GetDateTime

Edit:

Чтобы передать параметры, просто добавьте их в функцию:

[WebMethod]
public static int AddNumbers(int n1, int n2)
{
    return n1 + n2;
}

Я использую jQuery, поэтому объект data: будет установлен с:

data: "{n1: 1, n2: 2}",

Также обратите внимание, что возвращаемый объект JSON будет выглядеть следующим образом:

{"d":[3]}

Дополнительные "d" в данных объясняются здесь: http://encosia.com/2009/02/10/a-breaking-change-between-versions-of-aspnet-ajax/

8 голосов
/ 07 мая 2009

Не страница aspx, но, возможно, обработчик ashx. Для упрощения .Net 3.5 имеет встроенную поддержку сериализации для JSON .

2 голосов
/ 07 мая 2009

Посмотрите на класс JavascriptSerializer, предоставляемый платформой ASP.NET. Обычно вы используете это в методе страницы или WebMethod в WebService для возврата объекта, сериализованного как JSON.

См. Ссылку на MSDN здесь .

0 голосов
/ 07 мая 2009

Я обычно использую веб-сервис (asmx) с атрибутом ScriptService и ScriptManager. Есть некоторые небольшие несовместимости с некоторыми плагинами jQuery, но в этом нет ничего слишком серьезного, и мне не приходится иметь дело с какой-либо ручной сериализацией.

...