我有一个.NET Core Web Api,我最近从2.2版迁移到3.0版。 我的一个控制器中有一个返回字典的路由/方法。我现在遇到的问题是,当从 API 返回响应时,字典键在 PascalCase 中,而不是像我升级之前那样在驼峰中。
在更新到 .NET Core 3.0 之前,我的启动中有以下代码
services.AddMvcCore()
.AddJsonOptions(opts =>
{
opts.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
});
现在,自从删除了 Newtonsoft Json.Net 软件包以来,我删除了上面的代码块并将其替换为以下内容 -
services.AddControllers(config =>
{
// Some configuration in here
})
.AddJsonOptions(options => options.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase)
出于某种原因,当我希望字典键位于 CamelCase 中时,我仍然将字典键作为 Pascal 案例取回。我尝试了其他几种方法无济于事。 我通读了迁移文档,找不到有关此特定主题的任何信息。我还在 GitHub 上遇到了一些相关的问题,但没有帮助
- 问题 1
- 问题 2
也许我错过了某个地方的额外配置才能让它工作,或者我需要回到 Newtonsoft 包,我只是不确定。
这现在可以在 .Net 7 中实现(可能更早(。 在程序中.cs文件:
services.AddControllers()
.AddJsonOptions(o =>
{
o.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase;
});