本文介绍了DataContractJsonSerializer跳过空值节点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用 DataContractJsonSerializer
连载我的自定义对象JSON。但我想跳过数据成员的值空
。如果数据成员
是空
节点不应该进来的JSON字符串。
I am using DataContractJsonSerializer
to serialize my custom object to JSON. But i want to skip the data members whose values are null
. If DataMember
is null
that node should not come in JSON string.
我怎样才能做到这一点?给我一个简单的代码段
的工作。
How can I achieve this? Give me a simple code snippet
to work with.
推荐答案
可以使用在 [数据成员]
属性 EmitDefaultValue = FALSE
属性。会员标有该属性,它们的值将不会输出。
You can use the EmitDefaultValue = false
property in the [DataMember]
attribute. For members marked with that attribute, their values will not be output.
[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跳过空值节点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!