我正在序列化对象并从我的Web服务返回为json。但是,我试图从序列化的json中省略null属性。有没有办法做到这一点?我正在使用Web Api MVC 4 beta。
答案 0 :(得分:15)
当前的ASP.NET Web API(there are plans将其更改为最终版本以使用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响应的序列化方式,可以使用WebAPIContrib包,其中包含使用Json.Net或内置JavaScriptSeralizer的格式化程序。
答案 1 :(得分:9)
在Json.Net中,您可以将JsonPropertyAttribute与NullValueHandling = NullValueHandling.Ignore一起使用。看起来这里没有办法为全班做这个,只为每个类字段/属性明确。
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public string SometimesNull { get; set; }
FYI。有a reasons为什么Json.Net默认使用空值序列化属性。看一下,可能是适用于您的案例的一些原因。