首页 > 解决方案 > 为什么在没有序列化程序的情况下使用 Newtonsoft Json 进行驼峰化?

问题描述

我有一个我想序列化为 JSON 并使用驼峰式的对象。我有一个 .Net Core 3 Web Api 应用程序,在我的启动文件中我有以下服务注册:

services.AddControllersWithViews();
services.AddControllers().AddNewtonsoftJson(options =>
{
    options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
});

在我的控制器中,我有以下内容:

var js = JObject.FromObject(obj);

现在,这个序列化的结果是这样的:

{
 StartRow: 1,
 EndRow: 2
}

当我实例化一个 JsonSerializer 并将其作为第二个参数传递时,我得到了预期的驼峰格式:

{
 startRow: 1,
 endRow: 2
}

这是代码:

var serializer = new JsonSerializer()
        {
            ContractResolver = new CamelCasePropertyNamesContractResolver()
        };
var js = JObject.FromObject(obj, serializer);

这意味着我必须为每个控制器配备一个序列化程序。

我想知道我是否遗漏了什么或注册错误。

谢谢你。

标签: c#jsonasp.net-corejson.net

解决方案


试试这个:

public void ConfigureServices(IServiceCollection services)
{
    //do your stuff..
    services.AddControllers().AddNewtonsoftJson();
    JsonConvert.DefaultSettings = () => new JsonSerializerSettings
    {
        ContractResolver = new CamelCasePropertyNamesContractResolver()
    };
    //do your stuff..
}

参考:

将 PascalCase Newtonsoft.Json JObject 序列化为 camelCase


推荐阅读