DataContractJsonSerializer跳过空值节点(DataContractJsonS

2019-07-04 01:45发布

我使用DataContractJsonSerializer序列化我的自定义对象JSON。 但我想跳过数据成员,其值是null 。 如果DataMembernull节点不应该在JSON字符串。

我怎样才能做到这一点? 给我一个简单的code snippet的工作。

Answer 1:

您可以使用EmitDefaultValue = false的产权[DataMember]属性。 对于会员标记了属性,它们的值不会被输出。

[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()));
    }
}


文章来源: DataContractJsonSerializer to skip nodes with null values