C# 序列化XML和JSON的不同成员
我有几个类,我用C# 序列化XML和JSON的不同成员,c#,.net,json,serialization,datacontractserializer,C#,.net,Json,Serialization,Datacontractserializer,我有几个类,我用DataContract/DataMember属性和DataContractSerializer将它们序列化为XML。 现在,我想使用相同的类将来自客户端的ajax调用序列化为JSON。 但是,我想要序列化为JSON的成员与我想要序列化为XML的成员略有不同。是否有一种方法(使用属性)来区分这两者 顺便说一句,我使用的是DataContractSerializer而不是XmlSerializer,因为我需要序列化私有成员,所以切换到XmlSerializer不是一个选项。对于序列
DataContract
/DataMember
属性和DataContractSerializer
将它们序列化为XML。
现在,我想使用相同的类将来自客户端的ajax调用序列化为JSON。
但是,我想要序列化为JSON的成员与我想要序列化为XML的成员略有不同。是否有一种方法(使用属性)来区分这两者
顺便说一句,我使用的是
DataContractSerializer
而不是XmlSerializer
,因为我需要序列化私有成员,所以切换到XmlSerializer
不是一个选项。对于序列化json,我使用:
System.Web.Script.Serialization.JavaScriptSerializer
您还可以在您的情况下使用ignore属性来操纵输出
编辑:
刚刚注意到,在处理datacontracts时,您可能更熟悉另一个选项:
System.Runtime.Serialization.Json.DataContractJsonSerializer
参考资料:
我主要需要排除/忽略XML序列化的成员。这也可能吗?您可以忽略具有属性的类的公共属性,只需链接到DataContractSerializer即可。私人成员可能是个问题。但是这个序列化程序不会进行XML序列化。您需要使用您提到的DataContractSerializer或XmlSerializer。查看包含ScriptIgnoreAttribute示例的链接。如果您想在两个不同的上下文中公开不同的成员,那么根据定义,您有两个不同的数据协定。这是真的,所以我想问题是我可以在同一个类上定义两个不同的数据协定吗?