我该如何配置 ASP.NET Core Web Api 控制器,以便仅在 Development
环境下返回格式良好的 JSON?
默认情况下,它会返回类似以下内容:
{"id":1,"code":"4315"}
我希望响应中有缩进,以便易读:
{
"id": 1,
"code": "4315"
}
我该如何配置 ASP.NET Core Web Api 控制器,以便仅在 Development
环境下返回格式良好的 JSON?
默认情况下,它会返回类似以下内容:
{"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
。Startup.cs
文件中调用AddJsonOptions
扩展方法:services.AddMvc()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.WriteIndented = true;
});
关于根据环境切换选项,这个答案应该会有所帮助。
SerializerSettings
位于Microsoft.AspNetCore.Mvc
中,但是为了使用Formatting
,您需要添加using Newtonsoft.Json
。 - Maxoptions.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
- user1574598如果您想仅为单个控制器打开此选项而不是为所有JSON打开,您可以让您的控制器返回一个JsonResult并在构建JsonResult时传递Formatting.Indented,如下所示:
如果您想仅针对某个控制器启用此选项,而不是针对所有JSON启用,您可以让控制器返回一个JsonResult,并在构造JsonResult时传递Formatting.Indented参数,如下所示:
return new JsonResult(myResponseObject) { SerializerSettings = new JsonSerializerSettings() { Formatting = Formatting.Indented } };
在 .NetCore 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 } };
builder.Services.AddControllers()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.WriteIndented = true;
});