我正在序列化对象并从我的 Web 服务返回为 json。但是,我试图从序列化的 json 中省略空属性。有没有办法做到这一点?我正在使用 Web Api MVC 4 beta。
问问题
9457 次
2 回答
15
当前的 ASP.NET Web API(有计划将其更改为最终版本以使用 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的格式化程序。
于 2012-04-14T07:20:09.500 回答
10
在 Json.Net 中,您可以将JsonPropertyAttribute与 NullValueHandling=NullValueHandling.Ignore 一起使用。看起来这里无法对整个班级执行此操作,只能对每个班级字段/属性进行明确说明。
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public string SometimesNull { get; set; }
供参考。Json.Net 默认使用空值序列化属性是有原因的。看一下,可能有一些适用于您的案例的原因。
于 2013-06-03T15:47:17.133 回答