10

我正在研究 ASP.NET MVC 中的 REST API,其中生成的序列化 JSON 使用 lowercase_underscore 作为属性。

Person具有字符串属性的类FirstNameSurname,我得到如下 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)
4

1 回答 1

2

好的,找到了解决方案。我缺少该类的默认构造函数Person。一旦我这样做了,调用该Put方法时映射就起作用了。事实上,我也可以删除 FromBody 说明符:

public object Put(int id, Person person)
于 2013-08-05T06:48:28.083 回答