2016-04-11 14 views
5

Desidero ignorare quelle proprietà da serializzazione Json che è null. per questo ho aggiunto questa riga nel mio file webapi.config.Ignora il valore null e il valore predefinito dal serializzatore in web api

config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings {NullValueHandling = NullValueHandling.Ignore}; 

public static void Register(HttpConfiguration config) 
     {   
      config.SuppressDefaultHostAuthentication(); 
      config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); 
      config.MapHttpAttributeRoutes(); 
      config.Routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{action}/{identifier}", 
       defaults: new { identifier = RouteParameter.Optional } 
      ); 
      config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, DefaultValueHandling= DefaultValueHandling.Ignore }; 
     } 

Ma non sta ignorando quelle proprietà che è nulla.

Questa è la mia classe

public class UserProfile 
    { 
     [JsonProperty("fullname")] 
     public string FullName { get; set; } 

     [JsonProperty("imageid")] 
     public int ImageId { get; set; } 

     [JsonProperty("dob")] 
     public Nullable<DateTime> DOB { get; set; } 
    } 

È JSON ritorno da API Web

{ 
    "fullname": "Amit Kumar", 
    "imageid": 0, 
    "dob": null 
} 

non ho assegnato il valore di ddn e ImageID.

Seguo questo Link, ma non ha risolto il mio problema.

+0

Vuoi ignorare ogni proprietà nullo in qualsiasi oggetto serializzare o avete bisogno di decidere in modo selettivo quale proprietà con un valore nullo da ignorare? –

+0

@FedericoDipuma: Voglio ignorarlo in ogni oggetto, ecco perché l'ho aggiunto a livello globale. –

+0

@MostafizurRahman: No. Questa non è una domanda duplicata. –

risposta

0

Osservando Newtonsoft.Json source code ritengo che la JsonPropertyAttribute decorare le proprietà di classe è sovrascrivendo il default NullValueHandling specificato nel JsonSerializerSettings.

O rimuovere tali attributi (se si desidera utilizzare il NullValueHandling definito a livello globale) o specifica NullValueHandling esplicitamente:

public class UserProfile 
{ 
    [JsonProperty("fullname")] 
    public string FullName { get; set; } 

    [JsonProperty("imageid")] 
    public int ImageId { get; set; } 

    [JsonProperty("dob", NullValueHandling = NullValueHandling.Ignore)] 
    public Nullable<DateTime> DOB { get; set; } 
} 
+0

Ho rimosso quelli JsonProperty, ma il problema è lo stesso. –

+0

È davvero un comportamento strano. Ho provato a riprodurre il problema in un nuovo progetto di API Web, ma tutto funziona correttamente. Con le informazioni attuali non ho idea di cosa potrebbe essere sbagliato. Prova ad aggiungere il contenuto del tuo file Startup.cs o Global.asax.cs alla domanda. –

+0

Ha funzionato dopo aver aggiunto il file gloabal.asax. –

Problemi correlati