問題是,我該如何將亞音速類序列化爲JSON。雖然我可以手動創建JSON對象,但我需要一些自動完成的方法。序列化亞音速類到JSON
任何建議都會很棒,因爲我不是真的想手動做這個。 你能否也請推薦一個可以庫來幫助JSON序列化。
BTW我正在做這一切在ASP.Net 2.0
問題是,我該如何將亞音速類序列化爲JSON。雖然我可以手動創建JSON對象,但我需要一些自動完成的方法。序列化亞音速類到JSON
任何建議都會很棒,因爲我不是真的想手動做這個。 你能否也請推薦一個可以庫來幫助JSON序列化。
BTW我正在做這一切在ASP.Net 2.0
你看過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()上面是一個的webmethod。請注意,它已應用[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這裏返回一個字符串,但幾乎任何對象類型可以代替返回。 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,或者使用JsonSerializer將您的.NET 對象與單個方法調用 一起序列化。
使用
DataContractJsonSerializer
類序列化類型 的實例爲JSON文件和反序列化 JSON文檔到的類型的 實例。例如,您可以使用 創建一個名爲Person
的類型,其中 屬性包含基本的 數據,例如名稱和地址。然後,您可以創建並操作Person
類的一個 實例,並將 的所有屬性值寫入 JSON文檔中供以後檢索。 這個JSON文檔後來可以被反序列化爲Person
類 或另一個類與 數據契約。
我已經看過Json.Net但它仍然是一個非常手動的過程,我必須手動創建我的Json對象。我將在DataContractJsonSerializer上獲得一個掠奪,看看它是否有效,但看起來它是我正在尋找的。 – RC1140 2009-10-12 05:20:14
你指的是什麼WebMethods,因爲這可能對我也有幫助 – RC1140 2009-10-12 05:34:17
WebMethod是一個在ASP.NET頁面內聲明的靜態方法,可以從客戶端腳本中調用。它與Web服務(.asmx)中的方法類似,但是在常規.aspx頁面內聲明,而不是。 我在上面的回覆中輸入了一些其他參考。 – 2009-10-12 15:10:56
感謝兄弟真棒信息,我發現使用JSON.Net很容易做到,它只需要以下內容 string output = JsonConvert.SerializeObject(myClass); 我沒有測試過你的做法,但會標記爲完全任何方式 – RC1140 2009-10-12 18:42:03