将亚音速类序列化为JSON

时间:2009-10-12 04:35:55

标签: c# asp.net json

问题是,如何将亚音速类序列化为JSON。虽然我可以手动创建JSON对象,但我需要一些方法来自动创建它。

任何建议都很棒,因为我不想手动执行此操作。 您是否也可以推荐一个可以帮助JSON序列化的库。

BTW我正在ASP.Net 2.0中完成所有这些工作

2 个答案:

答案 0 :(得分:2)

你看过JavaScriptSerializer类了吗?它将创建.NET类型的JSON版本,包括任何公共属性和__type属性,以便在必要时可以重构/反序列化对象。

同样不是WebMethods返回JSON,这使得从AJAX向服务器来回发送对象变得非常方便。

编辑:添加了一些示例代码以响应OP的评论。

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()是一个web方法。请注意,它已应用 [WebMethod] 属性,并且静态。请注意,每次调用其中一个webMethod时,webMethod所在的页面都会调用它的 page_load()方法。相应地对您的网页进行编码。

要从JavaScript调用webMethod,您可以使用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返回一个字符串,但几乎可以返回任何对象类型。在使用webMethods时,SO和.NET周围都有很多很好的参考资料。

如果您不需要webMethod 的强大功能,而只希望将对象序列化为JSON,只需使用JSON序列化程序:

public string MyClassToJson(MyClass mc)
{
    JavaScriptSerializer serializer = new JavaScriptSerializer();

    string serializedObject = serializer.Serialize(mc);

    return serializedObject;
}

答案 1 :(得分:0)

我会查看Json.NET

  

Json.NET库使工作   使用JavaScript和JSON格式化   .NET中的数据简单。快速阅读和   使用JsonReader编写JSON   JsonWriter或序列化你的.NET   具有单个方法调用的对象   使用JsonSerializer。

DataContractJsonSerializer

  

使用DataContractJsonSerializer   用于序列化类型实例的类   到JSON文档和   将JSON文档反序列化为   类型的实例。例如,你   可以使用创建名为Person的类型   包含必要的属性   数据,例如姓名和地址。您   然后可以创建和操纵一个   Person类的实例和   在a中写下它的所有属性值   JSON文档供以后检索。   以后可以使用此JSON文档   反序列化为Person类   或另一个同等的班级   数据合同。