我如何在 ASP.NET Core Web API 中配置 JSON 格式缩进

How can i configure JSON format indents in ASP.NET Core Web API

我如何将 ASP.NET Core Web Api 控制器配置为 return 漂亮格式 json 仅适用于 Development 环境?

默认情况下,它 return 类似于:

{"id":1,"code":"4315"}

为了便于阅读,我想在响应中缩进:

{
    "id": 1,
    "code": "4315"
}

.NET Core 2.2 及更低版本:

在您的 Startup.cs 文件中,调用 AddJsonOptions 扩展名:

services.AddMvc()
    .AddJsonOptions(options =>
    {
        options.SerializerSettings.Formatting = Formatting.Indented;
    });

请注意,此解决方案需要 Newtonsoft.Json

.NET Core 3.0 及更高版本:

在您的 Startup.cs 文件中,调用 AddJsonOptions 扩展名:

services.AddMvc()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.WriteIndented = true;
    });

至于根据环境切换选项, 应该有所帮助。

如果你想为单个控制器而不是为所有 JSON 打开此选项,你可以让你的控制器 return 一个 JsonResult 并在构建时传递 Formatting.Indented JsonResult 是这样的:

return new JsonResult(myResponseObject) { SerializerSettings = new JsonSerializerSettings() { Formatting = Formatting.Indented } };

在 .Net Core 3+ 中,您可以按如下方式实现:

services.AddMvc()
    .AddJsonOptions(options =>
    {               
         options.JsonSerializerOptions.WriteIndented = true;    
    });

在我的项目中,我对所有控制器使用了 Microsoft.AspNetCore.Mvc 和下面的代码。这适用于 .NET Core 3。

public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllers()
                .AddNewtonsoftJson(options =>
                {
                    options.SerializerSettings.Formatting = Formatting.Indented;
                });
    }

如果您只希望此选项用于特定操作,请使用 System.Text.Json

return new JsonResult(myResponseObject) { SerializerSettings = new JsonSerializerOptions() { WriteIndented = true } };