2011-04-21 80 views
1

我有幾個類,我序列化到XML與DataContract/DataMember屬性和DataContractSerializer。 現在我想使用相同的類來序列化爲JSON爲來自客戶端的Ajax調用。 但是,我想要序列化爲JSON的成員與我想序列化爲XML的成員稍有不同。有沒有一種方法(有屬性)來區分這兩種?序列化XML和JSON的不同成員

順便說一句我正在使用DataContractSerializer而不是XmlSerializer,因爲我需要序列化私有成員,所以切換到XmlSerializer不是一個選項。

+0

如果您想在兩個不同的上下文中公開不同的成員,那麼根據定義,您有兩個不同的數據合同。 – Misko 2011-04-21 12:17:13

+0

這是真的,所以我想問題是我可以在同一個類上定義兩個不同的數據合同嗎? – Carvellis 2011-04-21 14:51:47

回答

1

序列化JSON,我使用:

System.Web.Script.Serialization.JavaScriptSerializer 

你也可以使用忽略屬性爲管理輸出使用您的具體情況。

http://msdn.microsoft.com/en-us/library/system.web.script.serialization.scriptignoreattribute.aspx

編輯:

只注意到有,你可能在處理datacontracts更熟悉的另一種選擇:

System.Runtime.Serialization.Json.DataContractJsonSerializer 

Refersnces:

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer.aspx

http://msdn.microsoft.com/en-us/library/bb412179.aspx

+0

主要我需要排除/忽略XML序列化的成員。這可能嗎? – Carvellis 2011-04-21 11:38:09

+0

您可以忽略具有屬性的類的公共屬性,只需鏈接您使用DataContractSerializer即可。私人會員可能是個問題。但是這個序列化程序不會執行XML序列化。如您所述,您需要使用DataContractSerializer或XmlSerializer。查看具有ScriptIgnoreAttribute示例的鏈接。 – Craig 2011-04-21 11:49:43