2012-04-14 11 views

Odpowiedz

15

Obecnie ASP.NET Web API (there are plans, aby zmienić go na wersję ostateczną do używania Json.Net) domyślnie używa DataContractJsonSerializer do serializowania JSON.

Dzięki temu można kontrolować proces serializacji za pomocą standardowych atrybutów DataContract/DataMember. Aby pominąć właściwości null, można ustawić wartość EmitDefaultValue na wartość false.

[DataContract] 
public class MyObjet 
{ 
    [DataMember(EmitDefaultValue = false)] 
    public string Prop1 { get; set; } 

    [DataMember(EmitDefaultValue = false)] 
    public string Prop2 { get; set; } 
} 

Jeśli chcesz mieć większą kontrolę nad tym, w jaki sposób odpowiedzi JSON są szeregowane można skorzystać z pakietu, który zawiera WebAPIContrib formatery użyciu Json.Net lub wbudowanego w JavaScriptSeralizer.

9

W Json.Net można użyć JsonPropertyAttribute z NullValueHandling = NullValueHandling.Ignore. Wygląda na to, że nie ma takiej możliwości dla całej klasy, a jedynie dla każdego pola/właściwości klasy.

[JsonProperty(NullValueHandling = NullValueHandling.Ignore)] 
public string SometimesNull { get; set; } 

FYI. Istnieje a reasons, dlaczego Json.Net domyślnie serializuje właściwości z wartościami null. Spójrz, mogą być niektóre z tych powodów, które dotyczą twoich spraw.

Powiązane problemy