13

Ich verwende DataContractJsonSerializer, um mein benutzerdefiniertes Objekt zu JSON zu serialisieren. Aber ich möchte die Datenelemente überspringen, deren Werte null sind. Wenn DataMember ist null dieser Knoten sollte nicht in JSON-Zeichenfolge kommen.DataContractJsonSerializer zum Überspringen von Knoten mit Nullwerten

Wie kann ich das erreichen? Gib mir eine einfache code snippet mit zu arbeiten.

Antwort

31

Sie können die Eigenschaft EmitDefaultValue = false im Attribut [DataMember] verwenden. Für Mitglieder, die mit diesem Attribut markiert sind, werden ihre Werte nicht ausgegeben.

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

Vielen Dank @carlosfigueira – Kishor

Verwandte Themen