2012-04-14 2 views

risposta

15

L'API Web ASP.NET attualmente (there are plans per modificarlo per la versione finale per utilizzare Json.Net) utilizza DataContractJsonSerializer per impostazione predefinita per serializzare JSON.

Quindi è possibile controllare il processo di serializzazione con gli attributi DataContract/DataMember standard. Per saltare le proprietà nulle è possibile impostare EmitDefaultValue su false.

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

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

Se si desidera avere un maggiore controllo su come le risposte JSON vengono serializzati è possibile utilizzare il pacchetto che contiene WebAPIContrib formattatori utilizzando Json.Net o il costruito nel JavaScriptSeralizer.

9

In Json.Net è possibile utilizzare JsonPropertyAttribute con NullValueHandling = NullValueHandling.Ignore. Sembra che qui non ci sia modo di farlo per l'intera classe, solo l'esplicita 'per ogni campo di classe/proprietà.

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

FYI. C'è a reasons perché Json.Net serializza di default le proprietà con valori nulli. Dai un'occhiata, potrebbero essere alcuni dei motivi applicabili ai tuoi casi.