C# 在MVC Web Api 4 Beta中从Json中删除空属性

C# 在MVC Web Api 4 Beta中从Json中删除空属性,c#,asp.net-mvc,json,asp.net-web-api,C#,Asp.net Mvc,Json,Asp.net Web Api,我正在序列化对象并从web服务返回json。但是,我试图从序列化的json中省略null属性。有办法做到这一点吗?我使用的是Web Api MVC 4 beta版。当前ASP.NET Web Api(将其更改为最终版本使用Json.NET)默认使用序列化Json 因此,您可以使用标准DataContract/DataMember属性控制序列化过程。要跳过空属性,可以将设置为false [DataContract] public class MyObjet { [DataMember(Em

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

当前ASP.NET Web Api(将其更改为最终版本使用Json.NET)默认使用序列化Json

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

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

    [DataMember(EmitDefaultValue = false)]
    public string Prop2 { get; set; }
}
如果您想更多地控制JSON响应的序列化方式,您可以使用包含格式化程序的包,使用或内置。在JSON.Net中,您可以使用NullValueHandling=NullValueHandling.Ignore。看起来没有办法对整个类执行此操作,只有对每个类字段/属性进行明确说明

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

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

事实上,我想略去。