我在基于ASP.NET核心Web API的REST服务上工作,并想在我的端点添加一个参数'prettify‘,这样响应json就会被缩进格式化,并在web浏览器中可读。
我的问题--如何在ASP.WEB应用程序接口核心应用程序中更改每个控制器方法的JSON格式?
谢谢你的帮助。
发布于 2017-01-31 21:30:29
感谢@Nkosi评论,我找到了解决方案。下面是动作过滤器的代码,它查找'prettify‘参数并将缩进添加到输出JSON。如果省略该参数,则还会添加缩进。
public class OutputFormatActionFilter : IActionFilter
{
public void OnActionExecuting(ActionExecutingContext context)
{
}
public void OnActionExecuted(ActionExecutedContext context)
{
var actionResult = context.Result as ObjectResult;
if (actionResult == null) return;
var paramObj = context.HttpContext.Request.Query["prettify"];
var isPrettify = string.IsNullOrEmpty(paramObj) || bool.Parse(paramObj);
if (!isPrettify) return;
var settings = new JsonSerializerSettings { Formatting = Formatting.Indented };
actionResult.Formatters.Add(new JsonOutputFormatter(settings, ArrayPool<char>.Shared));
}
}https://stackoverflow.com/questions/41954750
复制相似问题