Asp.net Core Razor Pages序列化无法在Startup.cs中使用CamelCasePropertyNamesContractResolver

时间:2018-05-22 16:59:16

标签: asp.net-core json.net camelcasing razor-pages

我正在使用Asp.net Core Razor Pages而且我正在返回json。我需要json全部采用骆驼套管,因此我尝试将解析器设置为 Startup.cs ,就像这样

services.AddMvc()
        .AddJsonOptions(options => {
             options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
        });

然而这不起作用,剃刀页面仍然在Pascal框中返回json。我该如何纠正这个问题?谢谢。

1 个答案:

答案 0 :(得分:1)

使用AddJsonOptions时,您正在配置特定于ASP.NET Core MVC的JsonSerializerSettings实例。当您使用JsonConvert.SerializeObject时,您正在使用不同的 JsonSerializerSettings实例。为了影响 实例,您可以使用JsonConvert.DefaultSettings,如下所示:

JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
    ContractResolver = new CamelCasePropertyNamesContractResolver()
};

很遗憾,您对DefaultSettings所做的更改不适用于通过AddJsonOptions配置的实例 - 您需要单独配置这些更改。如果您有兴趣,可以看看这是source中由JsonSerializerSettingsProvider创建的单独实例。