【问题标题】:Asp.net Core Razor Pages serialization not working with CamelCasePropertyNamesContractResolver in Startup.csAsp.net Core Razor Pages 序列化不适用于 Startup.cs 中的 CamelCasePropertyNamesContractResolver
【发布时间】:2018-05-22 16:59:15
【问题描述】:

我正在使用 Asp.net Core Razor Pages,我正在返回 json。我需要 json 全面采用驼色外壳,因此我尝试像这样在 Startup.cs 中设置解析器

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

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

【问题讨论】:

  • @KirkLarkin 我正在使用这个 JsonConvert.SerializeObject(object);

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


【解决方案1】:

当您使用 AddJsonOptions 时,您正在配置一个特定于 ASP.NET Core MVC 的 JsonSerializerSettings 实例。当您使用JsonConvert.SerializeObject 时,您使用的是JsonSerializerSettings不同 实例。为了影响那个实例,你可以使用JsonConvert.DefaultSettings,像这样:

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

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

【讨论】:

    猜你喜欢
    • 2018-10-29
    • 2018-10-16
    • 1970-01-01
    • 2019-08-11
    • 2020-11-21
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    相关资源
    最近更新 更多