c# - 为什么在没有序列化程序的情况下使用 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);
这意味着我必须为每个控制器配备一个序列化程序。
我想知道我是否遗漏了什么或注册错误。
谢谢你。
解决方案
试试这个:
public void ConfigureServices(IServiceCollection services)
{
//do your stuff..
services.AddControllers().AddNewtonsoftJson();
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
//do your stuff..
}
参考: