13

Tôi đang sử dụng DataContractJsonSerializer để tuần tự hóa đối tượng tùy chỉnh của mình thành JSON. Nhưng tôi muốn bỏ qua các thành viên dữ liệu có giá trị là null. Nếu DataMembernull nút đó sẽ không có trong chuỗi JSON.DataContractJsonSerializer để bỏ qua các nút có giá trị rỗng

Tôi làm cách nào để đạt được điều này? Hãy cho tôi một đơn giản code snippet để làm việc cùng.

Trả lời

31

Bạn có thể sử dụng thuộc tính EmitDefaultValue = false trong thuộc tính [DataMember]. Đối với các thành viên được đánh dấu bằng thuộc tính đó, giá trị của chúng sẽ không được xuất.

[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

Cảm ơn rất nhiều @carlosfigueira – Kishor

Các vấn đề liên quan