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

本文关键字:缩进 NET 核心 API Web 格式 JSON ASP 配置 | 更新日期: 2023-09-27 18:03:45

如何配置ASP。. NET核心Web Api控制器只返回Development环境的漂亮格式化json ?

默认返回如下内容:

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

我希望在响应中有缩进以提高可读性:

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

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

。. 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打开这个选项,你可以让你的控制器返回一个JsonResult并传递format。在构造JsonResult时缩进,如下所示:

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

在.NetCore 3+中,您可以实现以下功能:

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

在我的项目中,我使用Microsoft.AspNetCore.Mvc与下面所有控制器的代码。

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