今天遇到一个返回模型变驼峰与代码ToJson()返回的参数不匹配问题,特此记录一下
上图使用 JsonConvert.SerializeObject(str); 序列化为Json字符串,返回参数为属性名称(大驼峰).
控制器返回的ResponseBase对象返回的却为字段名称(小驼峰)
那么问题来了!!!为什么,怎么解决?
Why : .Net Core 默认使用小驼峰序列化Json类型参数.想要使用模型本身命名的需要配置Json选项.
参考官网:https://docs.microsoft.com/zh-cn/aspnet/core/web-api/advanced/formatting?view=aspnetcore-3.1
配置基于 System.Text.Json 的格式化程序
基于 Newtonsoft.Json 的 JSON 格式支持
继续F12踩进去,加上翻译.
最后贴出代码.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers()
.AddNewtonsoftJson(options =>
{
// Use the default property (Pascal) casing
//大驼峰
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
//小驼峰
//options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
//缩进换行
options.serializerSettings.Formatting = Formatting.Indented;
});// 支持 NewtonsoftJson
}