我正在 ASP.NET MVC 中开发 REST API,其中生成的序列化 JSON 使用 lowercase_underscore 作为属性。
从具有字符串属性 FirstName
和 Surname
的类 Person
中,我得到如下 JSON:
{
first_name: "Charlie",
surname: "Brown"
}
注意小写_下划线名称。
我用来为我自动执行此转换的契约(Contract)解析器是:
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)
关于c# - 用于小写下划线到 CamelCase 的自定义 Json.NET 契约(Contract)解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18051395/