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

ohfgkhjo  于 6个月前  发布在  .NET
关注(0)|答案(6)|浏览(67)

如何配置ASP.NET Core Web API控制器,使其仅为Development环境返回格式化的JSON?
默认情况下,它返回如下内容:

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

字符串
我希望在响应中有缩进的可读性:

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

3hvapo4f

3hvapo4f1#

.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;
    });


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

fykwrbwg

fykwrbwg2#

如果你想为单个控制器而不是所有JSON打开这个选项,你可以让你的控制器返回一个JsonResult,并在构造JsonResult时传递一个.Indented,如下所示:

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

字符串

j8ag8udp

j8ag8udp3#

在.NetCore 3+中,您可以通过以下方式实现这一点:

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

字符串

xsuvu9jc

xsuvu9jc4#

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

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

字符串

h7appiyu

h7appiyu5#

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

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

字符串

6tqwzwtp

6tqwzwtp6#

在.NET 7中,如果你想返回缩进的JSON输出,并且你正在使用控制器,你可以在启动代码中使用它:

builder.Services.AddControllers()
            .AddJsonOptions(options =>
            {
                options.JsonSerializerOptions.WriteIndented = true;
            });

字符串
这是使用.NET中内置的JSON功能,而不是使用任何外部框架,如Newtonsoft。

相关问题