我使用DataContractJsonSerializer
序列化我的自定义对象JSON。 但我想跳过数据成员,其值是null
。 如果DataMember
是null
节点不应该在JSON字符串。
我怎样才能做到这一点? 给我一个简单的code snippet
的工作。
我使用DataContractJsonSerializer
序列化我的自定义对象JSON。 但我想跳过数据成员,其值是null
。 如果DataMember
是null
节点不应该在JSON字符串。
我怎样才能做到这一点? 给我一个简单的code snippet
的工作。
您可以使用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()));
}
}