自定义Json.NET合约解析器,用于将小写下划线转换为CamelCase

我正在使用ASP.NET MVC中的REST API,其中生成的序列化JSON使用lowercase_underscore作为属性。

从具有字符串属性FirstNameSurname Person类中,我得到如下JSON:

 { first_name: "Charlie", surname: "Brown" } 

请注意lowercase_underscore名称。

我用来为我自动执行此转换的合同解析程序是:

 public class JsonLowerCaseUnderscoreContractResolver : DefaultContractResolver { private Regex regex = new Regex("(?!(^[AZ]))([AZ])"); protected override string ResolvePropertyName(string propertyName) { return regex.Replace(propertyName, "_$2").ToLower(); } } 

这一切都很好,但我不知道如何用Json.NET实现反向。 因此,例如,我可以如下声明API方法,并且它知道将请求正文中的传入JSON转换为适当的对象:

 public object Put(int id, [FromBody] Person person) 

好的,找到了解决方案。 我错过了Person类的默认构造函数。 一旦我这样做,映射在调用Put方法时起作用。 事实上,我也可以删除FromBody说明符:

 public object Put(int id, Person person)