Сериализация дозвукового класса в JSON - PullRequest
2 голосов
/ 12 октября 2009

Поскольку вопрос идет о том, как мне сериализовать дозвуковой класс в JSON. Хотя я могу вручную создать объект JSON, мне нужен какой-то способ сделать это автоматически.

Любые рекомендации будут великолепны, так как я не хочу делать это вручную. Не могли бы вы также порекомендовать библиотеку, которая может помочь с сериализацией JSON.

Кстати, я делаю все это в ASP.Net 2.0

Ответы [ 2 ]

2 голосов
/ 12 октября 2009

Вы смотрели на класс 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;
}
0 голосов
/ 12 октября 2009

Я бы проверил либо Json.NET :

Библиотека Json.NET работает с форматированием JavaScript и JSON Данные в .NET просты. Быстро читать и написать JSON с помощью JsonReader и JsonWriter или сериализуйте ваш .NET объекты с одним вызовом метода используя JsonSerializer.

или DataContractJsonSerializer:

Используйте DataContractJsonSerializer класс для сериализации экземпляров типа в документ JSON и десериализовать документ JSON в экземпляр типа. Например, вы можно создать тип с именем Person с свойства, которые содержат необходимые данные, такие как имя и адрес. Вы затем может создавать и манипулировать экземпляр класса Person и записать все значения своих свойств в Документ JSON для последующего поиска. Этот документ JSON может быть позже десериализован в класс Person или другой класс с эквивалентным Договор передачи данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...