2012-04-14 30 views

回答

15

当前的ASP.NET Web API(there are plans将其更改为最终版本以使用Json.Net)默认情况下使用DataContractJsonSerializer来序列化JSON。

因此,您可以使用标准DataContract/DataMember属性控制序列化过程。要跳过空属性,您可以将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格式化其中包含了更多的控制。

9

在Json.Net中,您可以使用JsonPropertyAttribute和NullValueHandling = NullValueHandling.Ignore。看起来这里没有办法为整个班级做到这一点,只有每个班级领域/财产的明确性。

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

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