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

kko*_*yik 14 c# asp.net-mvc json asp.net-web-api

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

nem*_*esv 15

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; }
}
Run Code Online (Sandbox Code Playgroud)

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


res*_*kiy 9

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

[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public string SometimesNull { get; set; }
Run Code Online (Sandbox Code Playgroud)

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