Asp.net web api 动态(ExpandooObject)上属性的.NET核心json序列化

Asp.net web api 动态(ExpandooObject)上属性的.NET核心json序列化,asp.net-web-api,asp.net-core,.net-core,Asp.net Web Api,Asp.net Core,.net Core,我在.NET Core 1.0中有一个web api,我喜欢新特性,即属性默认序列化为camelCasing,而不是PascalCasing 但是,我的一些api方法返回dynamic或ExpandoObject,并且这些方法上的属性按原样序列化,这意味着如果我将它们作为PascalCasing添加到动态对象中,那么它们将按原样序列化 我认为这是因为动态对象与字典密切相关,这就是它行为不同的原因 如何使动态以一种好的方式用序列化 (在从API返回之前,我可以在每个返回的动态中使用小写键重新创建字

我在.NET Core 1.0中有一个web api,我喜欢新特性,即属性默认序列化为camelCasing,而不是PascalCasing

但是,我的一些api方法返回
dynamic
ExpandoObject
,并且这些方法上的属性按原样序列化,这意味着如果我将它们作为PascalCasing添加到动态对象中,那么它们将按原样序列化

我认为这是因为动态对象与
字典
密切相关,这就是它行为不同的原因

如何使
动态
以一种好的方式用序列化


(在从API返回之前,我可以在每个返回的动态中使用小写键重新创建字典,但我正在寻找一种很好的方法来实现这一目标)

这可以在Startup.cs->ConfigureServices中解决:

services.AddMvc().AddJsonOptions(opt =>
{
    opt.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
});
有几处提到,这现在是ASP.NET Core 1.0的默认行为,但事实并非如此。添加此行会影响动态属性,默认情况下不会影响这些属性。