2013-11-02 13 views
6

ho questa classe, come una versione ridotta:WebAPI non tornare JSON per INT quando il valore è pari a zero

public class SportTableRow 
{ 
    public Int32 Won { get; set; } 
    public Int32 Lost { get; set; } 
    public Int32 Drawn { get; set; } 
    public Int32 For { get; set; } 
} 

Quando faccio una chiamata al dati via WebAPI, sembra che questo (ancora una volta tagliato giù) ...

public List<SportTableRow> Get() 
     { 
      var options = .... 
      var sport = .... 
      var locationCode = ... 

      return SportManager.GetOverallTable(sport, options, 
         locationCode).TableRows; 
     } 

Quando ho ispezionare i dati restituiti in debugger, è possibile visualizzare le proprietà nella lista ...

enter image description here

Ma, quando ho chiamata tramite violinista, si può vedere che alcune proprietà mancano ...

enter image description here

... e sembra essere qualsiasi Int 's che sono 0, e bool' s che sono false ecc.

Devo impostare qualcosa sulla classe effettiva o qualcosa nel serializzatore JSON?

+1

@bump Non l'ha chiesto. – user2674389

+0

@ user2674389 Non ha chiesto come far funzionare Json? – bump

+0

@bump Ha chiesto perché ci sono proprietà mancanti nel suo JSON risultante. Si prega di leggere l'intera domanda. – user2674389

risposta

12

Il serializzatore JSON JSON.NET è impostato in modo predefinito per escludere proprietà impostate su valori predefiniti. Ad esempio, boolean=false, int=0, int?=null, object=null, ecc. sarà escluso dal JSON risultante. L'intenzione è di ridurre al minimo la larghezza di banda.

È possibile modificare questo comportamento modificando le impostazioni:

System.Web.Http 
       .GlobalConfiguration.Configuration 
       .Formatters 
       .JsonFormatter 
       .SerializerSettings 
       .DefaultValueHandling 
          = Newtonsoft.Json.DefaultValueHandling.Include; 

Miglior aggiungere questa riga nel file Global.asax. Nota: questo aggiungerà semplicemente larghezza di banda senza vantaggi reali, specialmente se controlli anche il lato client

+0

Grazie per la risposta, avevo bisogno di aggiornare la WebAPI anche tramite NuGet, quindi ha funzionato (vale la pena leggerlo anche nel mio caso) http://stackoverflow.com/questions/11999165/cant-make-mvc4-webapi-include -null-fields-in-json – christiandev

+0

Interessante, non sapevo di quell'errore. Grazie per avermi fatto sapere! – user2674389

Problemi correlati