我已經建立了一個的Web API應用程序,發現了一個問題(目前在我的代碼處理不好),在包裝從所有API操作返回所有Json
對象概括的問題自定義節點(根)。淨過濾器用於包裝JsonResult舉動的反應
即:我有此JSON(陣列)迴應:
[
{
"Category": "Pages",
"Users": [
{
"ID": "1",
"Fname": "Foo",
"Lname": "Bar"
}
]
}
]
,需要這樣的響應:
{
"Object": {
"Body": [
{
"Category": "Pages",
"Users": [
{
"ID": "1",
"Fname": "Foo",
"Lname": "Bar"
}
]
}
]
}
}
所以我在這裏只是包裹在裏面{"Object":{"Body": <Response Here>}}
這我的反應需要將其應用於Array
類型的所有API Json響應。
而對於簡單的JSON對象的反應,我需要它只是被裹得像個{"Object": <Response Here>}
我包目前在每個控制器動作這段代碼的JSON響應:
public JsonResult Categories()
{
return Json(new { Object= new { Body= GetCategoriesList() } }, JsonRequestBehavior.AllowGet);
}
當然這一成就是如此不好,因爲我必須在每個動作中重複這個包裝。
我的問題是:
如何創建ActionFilterAttribute
每個動作執行之後被調用來包裝響應按照上面的Json樣?
,即創建過濾器:
public class JsonWrapper: System.Web.Mvc.ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
}
}
即調用過濾器:
[JsonWrapper]
public class APIController : Controller
而且還設置響應內容類型相同的過濾器"application/json"
[在MVC 4正確的JSON序列]的可能的複製(http://stackoverflow.com/questions/17244774/proper-json-serialization-in-mvc-4) – MrClan
你需要一個**定製JSON序列化器**而不是過濾器。 – MrClan