如何配置WebApi以序列化对象而不更改其属性名称的大小写

时间:2018-10-06 13:37:02

标签: json serialization asp.net-web-api2

当我直接从WebApi2方法返回动态对象(从Dapper获取)时,属性的大小写被取消,并且与查询SQL中定义的列名大小写完全匹配。

有问题的对象是行集,如果我使用LINQ对它进行操作并返回结果IEnumerable,则json会被驼峰式包裹。

这与切向相关:Web API 2: how to return JSON with camelCased property names, on objects and their sub-objects

我该如何配置序列化以考虑其自己该死的业务并通过不变传递名称?

没有被迫骆驼案或Pascal案,只是通过了。

1 个答案:

答案 0 :(得分:0)

答案似乎并没有出现,我对最佳策略的立场无论如何都已改变,因此我将通过描述我如何处理序列化行为不一致的根本问题来回答自己的问题。

事实上,强制采用套管模式的业务全在于一致性和可预测性。行为是什么都没有关系,只要它是可预测的即可。

强制提高了可预测性:这是一个或另一个,您可以通过一个设置更改来自Web api的所有结果。因此,强制性更好,问题从“如何防止强迫性?”变化。到“如何像其他所有类型一样使动态受到强迫?”

答案就在这里:.NET Core json serialization of properties on dynamic (ExpandoObject)

答案是针对Core 1的,这是与Core 2相同的方法

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