省略默认值ASP.NET MVC 4 Web API

时间:2012-03-12 16:53:53

标签: .net asp.net-mvc wcf asp.net-mvc-4

我们正在考虑将我们当前正在开发的WCF REST API转换为使用新的ASP.NET MVC 4 Web API,因为它简化了许多工作。我喜欢WCF的一件事是能够将[DataMember(EmitDefaultValue = false)]属性添加到数据协定中,以便某些未设置的值不会在JSON / XML对象上被序列化。

新的ASP.NET MVC 4 Web API中是否存在与此函数等效的内容?我似乎无法找到任何有关此事的内容。

2 个答案:

答案 0 :(得分:0)

根据序列化机制,ASP.NET Web API将使用不同的序列化程序。目前,在JSON测试版中,它将使用JavaScriptSerializer,对于XML,它使用XmlSerializer。但UseDataContractSerializer上有XmlMediaTypeFormatter属性,允许您使用与WCF(DataContractFormatter)相同的XML序列化程序。

我不认为有一种独特的方法,只需用一些属性来装饰你的模型,使这两个序列化器的行为方式相同,除非编写一些自定义媒体类型格式化程序。因此,一种可能性是为XML / JSON编写自定义格式化程序,并将正在使用的序列化程序交换为WCF中使用的序列化程序。

这是使用JSON.Net for JSON的格式化程序的an example。您可以对其进行调整,以便使用DataContractJsonSerializer来考虑EmitDefaultValue属性。

答案 1 :(得分:0)