自定义Json.NET协定解析程序,用于将小写下划线转换为CamelCase

本文关键字:下划线 转换 CamelCase 用于 NET Json 程序 自定义 | 更新日期: 2023-09-27 18:26:20

我正在ASP.NET MVC中开发一个REST API,其中生成的串行化JSON使用lowercase_underscore作为属性。

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

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

请注意下面的base_underscore名称。

我用来自动为我进行转换的合同解析器是:

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

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

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

自定义Json.NET协定解析程序,用于将小写下划线转换为CamelCase

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

public object Put(int id, Person person)