如何配置ASP。. NET核心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
。
。. 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 } };