2012-04-14 10 views

Respuesta

15

La Web API de ASP.NET actualmente (there are plans para cambiarla para la versión final para usar Json.Net) usa DataContractJsonSerializer de forma predeterminada para serializar JSON.

Para que pueda controlar el proceso de serialización con los atributos estándar DataContract/DataMember. Para omitir las propiedades nulas, puede configurar el EmitDefaultValue en falso.

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

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

Si desea tener más control sobre cómo se serializan las respuestas JSON se puede usar el paquete que contiene WebAPIContrib formateadores usando Json.Net o el construido en JavaScriptSeralizer.

9

En Json.Net puede usar JsonPropertyAttribute con NullValueHandling = NullValueHandling.Ignore. Parece que aquí no hay forma de hacer esto para toda la clase, solo explicidad para cada campo/propiedad de clase.

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

FYI. Hay a reasons por qué Json.Net serializa por defecto las propiedades con valores nulos. Eche un vistazo, pueden ser algunas de estas razones aplicables a sus casos.

Cuestiones relacionadas