我正在使用ASP.NET MVC中的REST API,其中生成的序列化JSON对属性使用lowercase_underscore。
来自具有字符串属性Person
和FirstName
的类Surname
,我得到如下JSON:
{
first_name: "Charlie",
surname: "Brown"
}
请注意lowercase_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)
答案 0 :(得分:2)
好的,找到了解决方案。我错过了Person
类的默认构造函数。一旦我这样做,映射在调用Put
方法时起作用。实际上,我也可以删除FromBody说明符:
public object Put(int id, Person person)