一尘不染

设置JsonConvert.DefaultSettings ASP Net Core 2.0无法按预期工作

json

我在Startup.cs中有以下代码,希望它能覆盖默认的序列化选项。我希望它覆盖整个ASP Net Core
2.0项目中的每个序列化,但是动作返回值不正确,我认为此全局属性在Core 2.0中不起作用

我把它写在app.UseMvc()之前的Configure中。

JsonConvert.DefaultSettings = () => new JsonSerializerSettings
            {
                Formatting = Formatting.Indented,
                TypeNameHandling = TypeNameHandling.Objects,
                ContractResolver = new CamelCasePropertyNamesContractResolver(),
                Converters = new List<JsonConverter> { new StringEnumConverter() }
            };

阅读 375

收藏
2020-07-27

共1个答案

一尘不染

在ASP.NET
Core中,当在中连接应用程序上的服务时进行配置Startup.ConfigureServicesAddJsonOptions(Action<MvcJsonOptions>)扩展名IMvcBuilder返回的流利扩展AddMvc()名。MvcJsonOptions公开SerializerSettings您可以在操作代码中配置的属性。

因此,它不是在注册MVC之前进行一次配置,而是作为MVC注册的一部分完成的。

包含您的设置的示例:

services.AddMvc()
  .AddJsonOptions( options =>
  {
    options.SerializerSettings.Formatting = Formatting.Indented;
    options.SerializerSettings.TypeNameHandling = TypeNameHandling.Objects;
    options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
    options.SerializerSettings.Converters.Add(new StringEnumConverter());
  });
2020-07-27