Вы смотрели на класс JavaScriptSerializer? Он создаст JSON-версию типа .NET, включая любые открытые свойства и свойство __type, чтобы при необходимости можно было восстановить / десериализовать объект.
Кроме того, WebMethods не возвращает JSON, что делает невероятно удобным отправлять объекты назад и назад из AJAX на сервер.
РЕДАКТИРОВАТЬ : добавлен пример кода в ответ на комментарии ОП.
http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/
public partial class _Default : Page
{
[WebMethod]
public static string GetDate()
{
return DateTime.Now.ToString();
}
}
Метод GetDate () выше - это веб-метод. Обратите внимание, что к нему применен атрибут [WebMethod] , и что он статический . Обратите внимание, что страница, на которой находится webMethod, будет вызывать метод page_load () каждый раз, когда вы вызываете один из его методов webMethods. Кодируйте свои страницы соответственно.
Чтобы вызвать веб-метод из JavaScript, вы можете использовать jQuery:
$.ajax({
type: "POST",
url: "Default.aspx/GetDate",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(result) {
// Replace the div's content with the page method's return.
alert('Received from webmethod: '+result.d);
}
});
Пример webMethod здесь возвращает строку, но вместо него может быть возвращен практически любой тип объекта. В SO, а также в .NET есть много хороших ссылок на использование webMethods.
Если вам не нужна мощь webMethod и вместо этого вы хотите только сериализовать объект в JSON, просто используйте сериализатор JSON:
public string MyClassToJson(MyClass mc)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
string serializedObject = serializer.Serialize(mc);
return serializedObject;
}