13
我正在使用DataContractJsonSerializer
將我的自定義對象序列化爲JSON。但我想跳過值爲null
的數據成員。如果DataMember
是null
該節點不應以JSON字符串形式出現。DataContractJsonSerializer跳過空值的節點
我該如何做到這一點?給我一個簡單的code snippet
工作。
我正在使用DataContractJsonSerializer
將我的自定義對象序列化爲JSON。但我想跳過值爲null
的數據成員。如果DataMember
是null
該節點不應以JSON字符串形式出現。DataContractJsonSerializer跳過空值的節點
我該如何做到這一點?給我一個簡單的code snippet
工作。
您可以使用[DataMember]
屬性中的EmitDefaultValue = false
屬性。對於使用該屬性標記的成員,其值不會輸出。
[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 – Kishor