我有这门课,作为缩减版:
public class SportTableRow
{
public Int32 Won { get; set; }
public Int32 Lost { get; set; }
public Int32 Drawn { get; set; }
public Int32 For { get; set; }
}
当我通过WebAPI调用数据时,它看起来像这样(再次缩减)......
public List<SportTableRow> Get()
{
var options = ....
var sport = ....
var locationCode = ...
return SportManager.GetOverallTable(sport, options,
locationCode).TableRows;
}
当我在调试器中检查返回的数据时,您可以在列表中看到属性...
但是,当我通过fiddler打电话时,你会发现缺少一些属性......
...似乎是任何Int
为0,bool
为假等。
我是否需要在实际类上设置任何内容,或者在JSON序列化程序中设置什么内容?
答案 0 :(得分:12)
默认设置JSON序列化程序JSON.NET以排除设置为默认值的属性。例如,boolean=false
,int=0
,int?=null
,object=null
等将从生成的JSON 中排除。目的是最小化带宽。
您可以通过更改设置来更改此行为:
System.Web.Http
.GlobalConfiguration.Configuration
.Formatters
.JsonFormatter
.SerializerSettings
.DefaultValueHandling
= Newtonsoft.Json.DefaultValueHandling.Include;
最好在Global.asax
文件中添加此行。但请注意:这只会增加带宽而没有实际好处,特别是如果您也控制客户端