如何配置WebApi以在不更改属性名称大小写的情况下序列化对象

17 浏览
0 Comments

如何配置WebApi以在不更改属性名称大小写的情况下序列化对象

当我直接从一个WebApi2方法返回一个动态对象(从Dapper获得)时,属性的大小写保持不变,完全与查询SQL中定义的列名大小写匹配。

所讨论的对象是一个行集,如果我使用LINQ对其进行操作并返回结果的IEnumerable,那么JSON的属性将变为驼峰命名。

这是间接相关的:Web API 2: how to return JSON with camelCased property names, on objects and their sub-objects

我如何配置序列化使其只关注自己的事情并将名称传递不变?

不需要强制使用驼峰命名或帕斯卡命名,只需原样传递即可。

0
0 Comments

问题的出现原因:问题的提出者想要通过WebApi配置来序列化对象,但是不改变属性名称的大小写形式。

解决方法:通过强制转换的方法来改变动态对象的大小写形式。具体的解决方法如下:

在Startup.cs文件中的ConfigureServices方法中添加以下代码:

// in Startup.cs
public void ConfigureServices(IServiceCollection services)
{
  . . .
  services.AddMvc().AddJsonOptions(options =>
  {
    options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
  });
  . . .
}

以上代码是针对.NET Core 2版本的解决方法。而对于.NET Core 1版本,可以参考这里的回答来进行配置。

0