DataContractJsonSerializer跳过空值节点 [英] DataContractJsonSerializer to skip nodes with null values

查看:451
本文介绍了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跳过空值节点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆