2010-09-02 42 views
0

我有幾個公共靜態WebMethods,我通常通過jQuery使用Javascript(直接)訪問。這是有效的,我對結果感到滿意(並且不需要處理AJAX框架)。在ASP中自定義對象序列化?

我希望能夠做的是定義我自己的模擬JSON對象在JS和ASP之間傳遞(這是一個.NET 2.0 Web項目,CS和VB,我也引用了3.5當我需要3.5服務的非web項目)。但我有很多問題:

  • 我不能指定一個[DataContract],它告訴我我可能會丟失一個程序集。
  • 我不知道如何使用ISerializable接口,也不知道它是否能解決我的問題。特別是,當我使用JavaScriptSerializer時,通過GetObjectData添加東西似乎並沒有深入;我總是得到「{}」。
  • 用[Serializable]標記我的類似乎沒有做任何事情。
  • 我真的不知道還有什麼其他選項。

一些代碼:

[Serializable] 
public class MyClass : ISerializable 
{ 
    void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) 
    { 
     info.AddValue("test", "contents"); 
    } 
} 

// in my ASP page 
MyClass tmp = new MyClass(); 
JavaScriptSerializer s = new JavaScriptSerializer(); // System.Web.Script.Serialization.JavaScriptSerializer, to be specific. 
s.Serialize(tmp) // "{}" whether here, or by returning a MyClass instance from my WebMethod function (as Object, MyClass, etc.) 

我是相當新的CS/VB和.NET,所以請原諒我,如果我失去了一些東西非常明顯,這就是爲什麼我無法找到任何東西在線^^;

所以,我明確表示的問題是:我怎樣才能讓我自己的類可以在WebMethods的ASP中序列化?

回答

0

你看過可能是創建一個WCF服務嗎?它具有即開即用的json序列化。

+0

沒有,沒有。摸索一下後,看起來它比我的目標更大/更復雜(一個更好/簡化的JSON對象,尤其是.net 2沒有)。除非它看起來更簡單?在任何情況下,ASP.NET 2都會執行JSON序列化,我只是不想在它們的格式和我的每一次調用(可能是數百)之間進行轉換,因爲它可以/應該直接完成。 – Groxx 2010-09-02 18:29:39

+0

DataContractJsonSerializer怎麼樣? – CyberDude 2010-09-02 18:47:28

+0

我在3.5項目中沒有System.Runtime.Serialization.Json ...我將如何得到它? – Groxx 2010-09-02 18:58:26

相關問題