我已经建立了一个的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