C# DataContractJsonSerializer跳过具有空值的节点
我正在使用DataContractJsonSerializer将自定义对象序列化为JSON。但是我想跳过值为null的数据成员。如果DataMember为null,则该节点不应以JSON字符串形式出现 我怎样才能做到这一点?给我一个简单的代码片段来使用。您可以在[DataMember]属性中使用EmitDefaultValue=false属性。对于标记了该属性的成员,将不会输出其值C# DataContractJsonSerializer跳过具有空值的节点,c#,serialization,datacontractserializer,datacontractjsonserializer,C#,Serialization,Datacontractserializer,Datacontractjsonserializer,我正在使用DataContractJsonSerializer将自定义对象序列化为JSON。但是我想跳过值为null的数据成员。如果DataMember为null,则该节点不应以JSON字符串形式出现 我怎样才能做到这一点?给我一个简单的代码片段来使用。您可以在[DataMember]属性中使用EmitDefaultValue=false属性。对于标记了该属性的成员,将不会输出其值 [DataContract] public class MyType { [DataMember(Emit
[DataContract]
public class MyType
{
[DataMember(EmitDefaultValue = false)]
public string Prop1 { get; set; }
[DataMember(EmitDefaultValue = false)]
public string Prop2 { get; set; }
[DataMember(EmitDefaultValue = false)]
public string Prop3 { get; set; }
}
public class Test
{
public static void Main()
{
var dcjs = new DataContractJsonSerializer(typeof(MyType));
var ms = new MemoryStream();
var data = new MyType { Prop2 = "Hello" };
dcjs.WriteObject(ms, data);
// This will write {"Prop2":"Hello"}
Console.WriteLine(Encoding.UTF8.GetString(ms.ToArray()));
}
}
非常感谢@carlosfigueira