如何配置 Web Api 以序列化对象而不更改其 属性 名称的大小写
How do I configure WebApi to seralise objects without changing the casing of their property names
当我直接从 WebApi2 方法 return 一个动态对象(从 Dapper 获得)时,属性的大小写没有受到干扰,并且与查询中定义的列名大小写完全匹配 SQL。
有问题的对象是一个行集,如果我用 LINQ 和 return 结果 IEnumerable 对其进行操作,突然 json 是驼峰式的。
这是切线相关的:
我如何配置序列化来处理它自己该死的事情并通过不变传递名称?
没有被迫使用 camel case 或 Pascal case,只是通过了。
似乎没有答案,而且我对最佳策略的立场已经改变,所以我将通过描述我如何处理不一致序列化行为的潜在问题来回答我自己的问题。
事实上,强制套管模式的业务都是关于一致性和可预测性的。行为是什么并不重要,只要它是可预测的。
强制提高了可预测性:这是一个或另一个,您可以通过一个设置更改网络 api 中的所有结果。所以forcing更好,问题从"How can I prevent forcing?"变成了"How can I cause dynamics to be forced like all other types?"
答案就在这里:
这个答案是针对核心 1 的,下面是如何对核心 2 做同样的事情
// in Startup.cs
public void ConfigureServices(IServiceCollection services)
{
. . .
services.AddMvc().AddJsonOptions(options =>
{
options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
});
. . .
}
当我直接从 WebApi2 方法 return 一个动态对象(从 Dapper 获得)时,属性的大小写没有受到干扰,并且与查询中定义的列名大小写完全匹配 SQL。
有问题的对象是一个行集,如果我用 LINQ 和 return 结果 IEnumerable 对其进行操作,突然 json 是驼峰式的。
这是切线相关的:
我如何配置序列化来处理它自己该死的事情并通过不变传递名称?
没有被迫使用 camel case 或 Pascal case,只是通过了。
似乎没有答案,而且我对最佳策略的立场已经改变,所以我将通过描述我如何处理不一致序列化行为的潜在问题来回答我自己的问题。
事实上,强制套管模式的业务都是关于一致性和可预测性的。行为是什么并不重要,只要它是可预测的。
强制提高了可预测性:这是一个或另一个,您可以通过一个设置更改网络 api 中的所有结果。所以forcing更好,问题从"How can I prevent forcing?"变成了"How can I cause dynamics to be forced like all other types?"
答案就在这里:
这个答案是针对核心 1 的,下面是如何对核心 2 做同样的事情
// in Startup.cs
public void ConfigureServices(IServiceCollection services)
{
. . .
services.AddMvc().AddJsonOptions(options =>
{
options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
});
. . .
}