问题是,如何将亚音速类序列化为JSON。虽然我可以手动创建JSON对象,但我需要一些方法来自动创建它。
任何建议都很棒,因为我不想手动执行此操作。 您是否也可以推荐一个可以帮助JSON序列化的库。
BTW我正在ASP.Net 2.0中完成所有这些工作
答案 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
用于序列化类型实例的类 到JSON文档和 将JSON文档反序列化为 类型的实例。例如,你 可以使用创建名为Person
的类型 包含必要的属性 数据,例如姓名和地址。您 然后可以创建和操纵一个Person
类的实例和 在a中写下它的所有属性值 JSON文档供以后检索。 以后可以使用此JSON文档 反序列化为Person
类 或另一个同等的班级 数据合同。