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

时间:2012-04-14 01:43:47

标签: c# asp.net-mvc json asp.net-web-api

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

2 个答案:

答案 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默认使用空值序列化属性。看一下,可能是适用于您的案例的一些原因。