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