自定义Json.NET协定解析程序,用于将小写下划线转换为CamelCase
本文关键字:下划线 转换 CamelCase 用于 NET Json 程序 自定义 | 更新日期: 2023-09-27 18:26:20
我正在ASP.NET MVC中开发一个REST API,其中生成的串行化JSON使用lowercase_underscore作为属性。
从具有字符串属性FirstName
和Surname
的类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)
好的,找到了解决方案。我缺少Person
类的默认构造函数。一旦我这样做了,映射在调用Put
方法时就起作用了。事实上,我还可以删除FromBody说明符:
public object Put(int id, Person person)