我正在研究 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)