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

Mar*_*mro 28 c# asp.net json.net asp.net-core asp.net-core-webapi

如何配置ASP.NET Core Web Api控制器只返回Development环境相当格式化的json ?

默认情况下,它返回如下内容:

{"id":1,"code":"4315"}
Run Code Online (Sandbox Code Playgroud)

我希望在响应中有缩进以便于阅读:

{
    "id": 1,
    "code": "4315"
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*idG 58

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

services.AddMvc()
    .AddJsonOptions(options =>
    {
        options.SerializerSettings.Formatting = Formatting.Indented;
    });
Run Code Online (Sandbox Code Playgroud)

至于根据环境切换选项,这个答案应该有所帮助.

  • 请注意,“SerializerSettings”位于“Microsoft.AspNetCore.Mvc”中,但为了使用“Formatting”,您需要“使用 Newtonsoft.Json”。 (2认同)

loa*_*ger 10

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

services.AddMvc()
    .AddJsonOptions(options =>
    {               
         options.JsonSerializerOptions.WriteIndented = true;    
    });
Run Code Online (Sandbox Code Playgroud)


Bry*_*ard 8

如果要为单个控制器而不是为所有JSON启用此选项,则可以让您的控制器返回JsonResult并通过像这样构造JsonResult时传递Formatting.Indented:

return new JsonResult(myResponseObject) { SerializerSettings = new JsonSerializerSettings() { Formatting = Formatting.Indented } };
Run Code Online (Sandbox Code Playgroud)