2009-10-12 53 views
2

問題是,我該如何將亞音速類序列化爲JSON。雖然我可以手動創建JSON對象,但我需要一些自動完成的方法。序列化亞音速類到JSON

任何建議都會很棒,因爲我不是真的想手動做這個。 你能否也請推薦一個可以庫來幫助JSON序列化。

BTW我正在做這一切在ASP.Net 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()上面是一個的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; 
} 
+0

你指的是什麼WebMethods,因爲這可能對我也有幫助 – RC1140 2009-10-12 05:34:17

+0

WebMethod是一個在ASP.NET頁面內聲明的靜態方法,可以從客戶端腳本中調用。它與Web服務(.asmx)中的方法類似,但是在常規.aspx頁面內聲明,而不是。 我在上面的回覆中輸入了一些其他參考。 – 2009-10-12 15:10:56

+0

感謝兄弟真棒信息,我發現使用JSON.Net很容易做到,它只需要以下內容 string output = JsonConvert.SerializeObject(myClass); 我沒有測試過你的做法,但會標記爲完全任何方式 – RC1140 2009-10-12 18:42:03

0

我想看看要麼Json.NET

的Json.NET庫,使工作 JavaScript和JSON格式中的數據 。 NET簡單。快速閱讀並使用JsonReader和 編寫JSON,或者使用JsonSerializer將您的.NET 對象與單個方法調用 一起序列化。

DataContractJsonSerializer

使用DataContractJsonSerializer 類序列化類型 的實例爲JSON文件和反序列化 JSON文檔到的類型的 實例。例如,您可以使用 創建一個名爲Person的類型,其中 屬性包含基本的 數據,例如名稱和地址。然後,您可以創建並操作Person類的一個 實例,並將 的所有屬性值寫入 JSON文檔中供以後檢索。 這個JSON文檔後來可以被反序列化爲Person類 或另一個類與 數據契約。

+0

我已經看過Json.Net但它仍然是一個非常手動的過程,我必須手動創建我的Json對象。我將在DataContractJsonSerializer上獲得一個掠奪,看看它是否有效,但看起來它是我正在尋找的。 – RC1140 2009-10-12 05:20:14