c# - ASP.NET Core 3.0 中的 JsonOutputFormatter
问题描述
在 asp.net core 2.2 中,我曾经有以下内容,
var jsonSettings = new JsonSerializerSettings
{
ContractResolver = new SubstituteNullWithEmptyStringContractResolver()
};
services.AddMvc(options =>
{
options.OutputFormatters.RemoveType<JsonOutputFormatter>();
options.OutputFormatters.Add(new ResponseJsonOutputFormatter(jsonSettings,ArrayPool<char>.Shared));
}
public class ResponseJsonOutputFormatter : JsonOutputFormatter
{
// Stuff in here
}
但是在 3.0 中使用:
services.AddControllersWithViews(options =>
并且该类型JsonOutputFormatter
不再可用。
当前建议的全局自定义 json 响应的方法是什么?
我尝试使用IOutputFormatter
,但是当我将它设置为 OutputFormatters 时,它似乎没有连接,AddControllersWithViews
所以不确定是否有额外的步骤?
带有新端点路由的中间件会是一种选择吗?还是有更好的方法来实现这一目标?
解决方案
我个人使用 Json.NET
- 只需添加对Microsoft.AspNetCore.Mvc.NewtonsoftJson的包引用。
- 更新 Startup.ConfigureServices 以调用 AddNewtonsoftJson。
services.AddMvc().AddNewtonsoftJson();
Json.NET 设置可以在调用中设置AddNewtonsoftJson
:
services.AddMvc()
.AddNewtonsoftJson(options =>
options.SerializerSettings.ContractResolver =
new CamelCasePropertyNamesContractResolver());
我正在使用兼容模式的默认选项
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0)
.AddNewtonsoftJson(options => { options.SerializerSettings.ContractResolver =
new DefaultContractResolver(); });
推荐阅读
- format - AnyChart 图例图标位置
- ios - 如何从钥匙串中手动完成删除 iOS 应用程序数据
- ios - 根据用户使用的 iPhone 更改约束值
- javascript - 在超集仪表板中过滤具有不同数据源的图表?
- elasticsearch - 记录通过 ElasticSearch 高级 Java 客户端构建的 JSON 查询以进行调试?
- javascript - JQuery Select2 下拉选项超出容器宽度
- javascript - React Table - useRowSelect 的单选输入
- regex - 如何在 Ansible 剧本中包装长线 re 模式?
- python - ImportError:ubuntu 18.04 中没有名为“tensorrt”的模块
- google-apps-script - “超过了 Google Apps 脚本中的最大执行时间”停止了我的脚本