假设我有一个我希望能够序列化的类,如下所示:
public class SomeClass
{
[DataMember]
public object Var1 {get; set; }
[DataMember]
public object Var2 {get; set; }
[DataMember]
public object Var3 {get; set; }
}
有时我希望将其与Var3序列化,所以基本上是这样的:
public class SomeClass
{
[DataMember]
public object Var1 {get; set; }
[DataMember]
public object Var2 {get; set; }
public object Var3 {get; set; }
}
在其他情况下我希望省略Var2。
是否有任何方法可以使用属性来装饰类,这些属性可以让我选择以何种方式将此类序列化?
答案 0 :(得分:1)
将<meta charset="UTF-8">
参数添加到属性。
EmitDefaultValue
如果您想省略public class SomeClass
{
[DataMember]
public string Var1 { get; set; }
[DataMember(EmitDefaultValue = false)]
public object Var2 { get; set; }
[DataMember(EmitDefaultValue = false)]
public object Var3 { get; set; }
}
,请将其设为Var2
。
null
结果将被省略。
答案 1 :(得分:0)
如果您使用JSON.NET进行序列化,则可以使用Conditional Property Serialization
要有条件地序列化属性,请添加返回的方法 boolean与属性同名,然后为方法添加前缀 使用ShouldSerialize命名。该方法的结果确定是否 该属性是序列化的。如果方法返回true则为 属性将被序列化,如果它返回false然后属性 将被跳过。
实施例
public class SomeClass
{
[DataMember]
public object Var1 {get; set; }
[DataMember]
public object Var2 {get; set; }
[DataMember]
public object Var3 {get; set; }
public bool SerializeVar2 {get; set; }
public bool ShouldSerializeVar2
{
return SerializeVar2;
}
}