首页 > 代码库 > web Api自定义部分Action的JSON格式输出

web Api自定义部分Action的JSON格式输出

昨天项目中要部分Api的JSON格式需要特殊处理。最开始直接重写controller的JSON方法。经测试,当action直接返回数据的时候,不会调用Json方法。

然后找了各种方法,都不行。在群里问了。直到看到群友发的一个直接移除所有API的JSON格式方法的时候。图片如下:

然后就想到了Api的ActionFilterAttribute。就解决了自己的需求。

上代码。懒得写说明。

 1   public class AppFilterAttribte : ActionFilterAttribute 2     { 3         public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext) 4         { 5             foreach (var formatter in actionContext.ControllerContext.Configuration.Formatters) 6             { 7                 JsonMediaTypeFormatter jsonFormatter = formatter as JsonMediaTypeFormatter; 8                 if (jsonFormatter != null) 9                 {10                     jsonFormatter.SerializerSettings.ContractResolver = new AppContractResolver(); //自己需要的处理方式11                     break;12                 }13             }14             base.OnActionExecuting(actionContext);15         }        16     }

由于我使用的MVC版本Configuration没办法直接得到JsonFormatter,所以只好使用循环来取了!

在Action上配置如上的Filter就OK了。