Skip to main content
 首页 » 编程设计

c#之ASP WebAPI : Prettify ActionResult JSON output

2024年02月27日35hnrainll

我正在开发基于 ASP.NET Core Web API 的 REST 服务,并希望向我的端点添加一个参数“prettify”,以便响应 json 将采用缩进格式并在网络浏览器中可读。

我的问题 - 如何在 ASP.WEB API 核心应用程序中更改每个 Controller 方法的 JSON 格式?

感谢您的帮助。

请您参考如下方法:

感谢@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)); 
    } 
}