在MVC Web Api 4 Beta中从Json中删除Null属性

我正在序列化对象并从我的Web服务返回json。 但是,我试图从序列化的json中省略null属性。 有没有办法做到这一点? 我正在使用Web Api MVC 4 beta。

ASP.NET Web API目前( 计划在最终版本中更改它以使用Json.Net)默认使用DataContractJsonSerializer来序列化JSON。

因此,您可以使用标准DataContract / DataMember属性控制序列化过程。 要跳过null属性,可以将EmitDefaultValue设置为false。

[DataContract] public class MyObjet { [DataMember(EmitDefaultValue = false)] public string Prop1 { get; set; } [DataMember(EmitDefaultValue = false)] public string Prop2 { get; set; } } 

如果您想要更多地控制JSON响应的序列化方式,可以使用包含使用Json.Net或内置JavaScriptSeralizer的格式化程序的WebAPIContrib包。

在Json.Net中,您可以将JsonPropertyAttribute与NullValueHandling = NullValueHandling.Ignore一起使用。 看起来这里没有办法为全class做这个,只为每个类字段/属性明确。

 [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public string SometimesNull { get; set; } 

仅供参考。 因此,Json.Net默认使用空值序列化属性是有原因的 。 看一下,可能是适用于您的案例的一些原因。