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