C# CamelCasePropertyNamesContractResolver ASP.Net Web API空间未从序列化字典键中删除

C# CamelCasePropertyNamesContractResolver ASP.Net Web API空间未从序列化字典键中删除,c#,json.net,asp.net-web-api2,C#,Json.net,Asp.net Web Api2,我有CamelCasePropertyNamesContractResolver作为我的ASP.NETWebAPI的默认JSON解析器,并返回从我的控制器端点动态构建的字典。客户端希望所有结果都返回camel case,这意味着键中不应该有空格 如果我们有字典 var dictionary = new Dictionary<string, string>(){ {"This Key": "Some Value"} } return d

我有
CamelCasePropertyNamesContractResolver
作为我的ASP.NETWebAPI的默认JSON解析器,并返回从我的控制器端点动态构建的字典。客户端希望所有结果都返回camel case,这意味着键中不应该有空格

如果我们有字典

var dictionary = new Dictionary<string, string>(){
    {"This Key": "Some Value"}
}

return dictionary;
我得到的是:

{
    "this Key": "Some Value"
}
我的理解是驼峰案不应该有空白。也就是说,CamelCasePropertyNamesContractResolver是这样设计的吗?我应该实现一个自定义的契约解析程序来避免这种情况,还是可以覆盖
CamelCasePropertyNamesContractResolver
中的内容

这是一把小提琴,显示了我的意思:


否。它不这样做,也不是专门设计的。但是只要用你自己的扩展它。这并不难。您必须重写2个方法。@AluanHaddad它不这样做是什么意思?另外,我应该覆盖哪些方法?您可以在gihub检查解析器的实现。整体而言,它调用了一个util方法,该方法只执行camel外壳,而不删除空间。camel外壳没有正式定义,Newtonsoft做了他们认为合理的事情。您应该创建一个自定义(可能是从继承而来)并将其设置为启用,而不是自定义协定解析程序。
CamelCaseNamingStrategy
所做的是修改传入名称的大小写。它不会以其他方式添加或删除字符。请参阅:关于如何执行snake case,没有正式的规范。或者骆驼箱。
{
    "this Key": "Some Value"
}