Asp.net 核心 Razor 页面序列化在 Startup.cs 中无法与 CamelCasePropertyNamesContractResolver 一起使用
Asp.net Core Razor Pages serialization not working with CamelCasePropertyNamesContractResolver in Startup.cs
我正在使用 Asp.net Core Razor Pages,我正在返回 json。我需要 json 全面采用骆驼外壳,因此我尝试在 Startup.cs 中设置解析器,如下所示
services.AddMvc()
.AddJsonOptions(options => {
options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
});
但是这不起作用,razor 页面仍然以 Pascal 大小写返回 json。我该如何纠正这个问题?谢谢。
当您使用 AddJsonOptions
时,您正在配置特定于 ASP.NET Core MVC 的 JsonSerializerSettings
实例。当您使用 JsonConvert.SerializeObject
时,您使用的是 JsonSerializerSettings
的 不同 实例。为了影响 that 实例,你可以使用 JsonConvert.DefaultSettings
,像这样:
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
遗憾的是,您对 DefaultSettings
所做的更改不适用于通过 AddJsonOptions
配置的实例 - 您需要单独配置这些实例。如果您感兴趣,您可以看到 source 中的 JsonSerializerSettingsProvider
如何创建一个单独的实例。
我正在使用 Asp.net Core Razor Pages,我正在返回 json。我需要 json 全面采用骆驼外壳,因此我尝试在 Startup.cs 中设置解析器,如下所示
services.AddMvc()
.AddJsonOptions(options => {
options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
});
但是这不起作用,razor 页面仍然以 Pascal 大小写返回 json。我该如何纠正这个问题?谢谢。
当您使用 AddJsonOptions
时,您正在配置特定于 ASP.NET Core MVC 的 JsonSerializerSettings
实例。当您使用 JsonConvert.SerializeObject
时,您使用的是 JsonSerializerSettings
的 不同 实例。为了影响 that 实例,你可以使用 JsonConvert.DefaultSettings
,像这样:
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
遗憾的是,您对 DefaultSettings
所做的更改不适用于通过 AddJsonOptions
配置的实例 - 您需要单独配置这些实例。如果您感兴趣,您可以看到 source 中的 JsonSerializerSettingsProvider
如何创建一个单独的实例。