c# serialization datacontractserializer datacontractjsonserializer

c# - DataContractJsonSerializer para omitir nodos con valores nulos



serialization datacontractserializer (1)

Estoy usando DataContractJsonSerializer para serializar mi objeto personalizado a JSON. Pero quiero omitir los miembros de datos cuyos valores son null . Si DataMember es null el nodo no debería aparecer en la cadena JSON.

¿Cómo puedo conseguir esto? Dame un simple code snippet para trabajar.


Puede usar la propiedad EmitDefaultValue = false en el atributo [DataMember] . Para los miembros marcados con ese atributo, sus valores no se mostrarán.

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