我們正在研究將當前正在開發的WCF REST API轉換爲使用新的ASP.NET MVC 4 Web API,因爲它簡化了許多事情。有一件事我喜歡WCF是一個[數據成員(EmitDefaultValue = FALSE)]屬性添加到數據的合同,使得沒有設置一定的值,就不會被序列化回JSON/XML對象的能力。忽略默認值ASP.NET MVC 4 Web API
是否有相當於該功能的新ASP.NET MVC 4的Web API嗎?我似乎無法找到任何關於此事的信息。
我們正在研究將當前正在開發的WCF REST API轉換爲使用新的ASP.NET MVC 4 Web API,因爲它簡化了許多事情。有一件事我喜歡WCF是一個[數據成員(EmitDefaultValue = FALSE)]屬性添加到數據的合同,使得沒有設置一定的值,就不會被序列化回JSON/XML對象的能力。忽略默認值ASP.NET MVC 4 Web API
是否有相當於該功能的新ASP.NET MVC 4的Web API嗎?我似乎無法找到任何關於此事的信息。
根據序列化機制,ASP.NET Web API將使用不同的序列化程序。目前處於JSON測試階段,它將使用JavaScriptSerializer,對於XML,它使用XmlSerializer。但XmlMediaTypeFormatter上的UseDataContractSerializer
屬性允許您使用與WCF(DataContractFormatter)中相同的XML序列化程序。
我不認爲有通過只是裝飾你的模型的一些屬性,使那些2串行的行爲方式相同,除非編寫一些自定義的媒體類型格式的獨特方式。因此一種可能性是爲XML/JSON編寫自定義格式化程序,並將正在使用的序列化程序交換爲WCF中使用的那些。
這裏的an example這種格式化程序使用JSON.Net的JSON。您可以調整它,以便使用DataContractJsonSerializer,這將考慮EmitDefaultValue
屬性。
我們結束了使用在獲取的配置如你所說加載應用程序啓動時自定義格式的JSON.Net串行器。然後,我們使用DefaultValueAttribute來修飾屬性,並告訴序列化器配置忽略默認值。 – phreak3eb 2012-04-05 13:59:48