2013-11-02 15 views
6

ich diese Klasse haben, als abgespeckte Version:WebAPI JSON nicht für INT zurückkehrt, wenn Wert Null

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

Wenn ich einen Aufruf an die Daten über die WebAPI machen, sieht es so aus (wieder geschnitten unten) ...

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

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

Wenn ich die zurückgegebenen Daten in Debugger überprüfen, können Sie die Eigenschaften in der Liste sehen ...

enter image description here

Aber, wenn ich über Fiedler aufrufen, können Sie sehen, dass einige Eigenschaften fehlen ...

enter image description here

... und es scheint keine Int zu sein ‚s, die 0 sind, und bool‘ s welche sind falsch etc.

Muss ich irgendetwas auf der tatsächlichen Klasse oder etwas im JSON-Serializer einstellen?

+1

@ bump Er hat nicht darum gebeten. – user2674389

+0

@ user2674389 Er fragte nicht, wie man den Json zur Arbeit bringt? – bump

+0

@bump Er fragte, warum in seinem resultierenden JSON Eigenschaften fehlen. Bitte lies die ganze Frage. – user2674389

Antwort

12

Der JSON-Serializer JSON.NET ist standardmäßig so eingestellt, dass Eigenschaften ausgeschlossen werden, die auf Standardwerte gesetzt sind. Zum Beispiel werden boolean=false, int=0, int?=null, object=null usw. aus dem resultierenden JSON ausgeschlossen. Die Absicht ist es, die Bandbreite zu minimieren.

können Sie dieses Verhalten ändern, indem Sie die Einstellungen zu ändern:

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

Beste fügen Sie diese Zeile in der Global.asax Datei. Aber beachten Sie: Dies wird nur hinzufügen Bandbreite ohne echten Nutzen, vor allem, wenn Sie die Client-Seite zu steuern

+0

Danke für die Antwort, ich musste die WebAPI auch via NuGet updaten, damit das funktioniert (lesenswert auch in meinem Fall) http://stackoverflow.com/questions/11999165/cant-make-mvc4-webapi-include -null-fields-in-json – christiandev

+0

Interessant, ich wusste nicht über diesen Fehler. Danke für die Information! – user2674389

Verwandte Themen