C# 自定义Json.NET协定解析器,用于将小写下划线转换为大小写
我正在ASP.NETMVC中开发一个RESTAPI,其中生成的序列化JSON使用小写字母作为属性 从一个具有字符串属性C# 自定义Json.NET协定解析器,用于将小写下划线转换为大小写,c#,asp.net-mvc,json,rest,json.net,C#,Asp.net Mvc,Json,Rest,Json.net,我正在ASP.NETMVC中开发一个RESTAPI,其中生成的序列化JSON使用小写字母作为属性 从一个具有字符串属性FirstName和lasname的类Person,我得到如下JSON: { first_name: "Charlie", surname: "Brown" } 请注意小写的下划线名称 我用于为我自动执行此转换的合同解析程序是: 公共类JsonLowerCaseUnderscoreContractResolver:DefaultContractResolver { 私有
FirstName
和lasname
的类Person
,我得到如下JSON:
{
first_name: "Charlie",
surname: "Brown"
}
请注意小写的下划线名称
我用于为我自动执行此转换的合同解析程序是:
公共类JsonLowerCaseUnderscoreContractResolver:DefaultContractResolver
{
私有正则表达式Regex=newregex(“(?!(^[A-Z]))([A-Z])”;
受保护的重写字符串ResolvePropertyName(字符串propertyName)
{
返回regex.Replace(propertyName,“$2”).ToLower();
}
}
这一切都很好,但我不知道如何用Json.NET实现相反的效果。例如,我可以如下声明一个API方法,它知道如何将请求体中传入的JSON转换为适当的对象:
public对象Put(int-id,[FromBody]Person)
好的,找到了解决方案。我缺少Person
类的默认构造函数。一旦我这样做了,当调用Put
方法时,映射就起作用了。事实上,我还可以删除FromBody说明符:
public对象Put(int-id,Person)