【发布时间】:2009-10-12 04:35:55
【问题描述】:
问题是,我如何将亚音速类序列化为 JSON。虽然我可以手动创建 JSON 对象,但我需要一些方法来自动创建。
任何建议都会很棒,因为我真的不想手动执行此操作。 能否请您推荐一个 can 库来帮助进行 JSON 序列化。
顺便说一句,我在 ASP.Net 2.0 中完成所有这些操作
【问题讨论】:
问题是,我如何将亚音速类序列化为 JSON。虽然我可以手动创建 JSON 对象,但我需要一些方法来自动创建。
任何建议都会很棒,因为我真的不想手动执行此操作。 能否请您推荐一个 can 库来帮助进行 JSON 序列化。
顺便说一句,我在 ASP.Net 2.0 中完成所有这些操作
【问题讨论】:
你看过 JavaScriptSerializer 类吗?它将创建 .NET 类型的 JSON 版本,包括任何公共属性和 __type 属性,以便在必要时可以重构/反序列化对象。
WebMethods 也不返回 JSON,这使得从 AJAX 向服务器来回发送对象非常方便。
编辑:添加了一些示例代码以响应 OP 的 cmets。
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] 属性,并且它是 static。请注意,每次调用其中一个 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 返回一个字符串,但几乎可以返回任何对象类型。在 SO 和 .NET 中有很多关于使用 webMethods 的很好的参考资料。
如果您不需要 webMethod 的强大功能,而只想将对象序列化为 JSON,则只需使用 JSON 序列化器:
public string MyClassToJson(MyClass mc)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
string serializedObject = serializer.Serialize(mc);
return serializedObject;
}
【讨论】:
我会查看Json.NET:
Json.NET 库使工作 使用 JavaScript 和 JSON 格式 .NET 中的简单数据。快速阅读和 使用 JsonReader 编写 JSON 和 JsonWriter 或序列化您的 .NET 具有单个方法调用的对象 使用 JsonSerializer。
使用
DataContractJsonSerializer用于序列化类型实例的类 到 JSON 文档中并 将 JSON 文档反序列化为 类型的实例。例如,你 可以创建一个名为Person的类型 包含本质的属性 数据,例如姓名和地址。你 然后可以创建和操作Person类的实例和 将其所有属性值写入 JSON 文档供以后检索。 这个 JSON 文档可以在以后 反序列化为Person类 或具有同等学历的其他班级 数据合约。
【讨论】: