如何将Web API 2 HttpRequestMessage序列化到我的自定义对象中

nei*_*ldt 0 c# asp.net-web-api

我的WebAPI 2项目中有以下方法.

public class TestController : ApiController
{
    [HttpPost]
    public void Test(HttpRequestMessage request)
    {
        var content = request.Content;
        string jsonContent = content.ReadAsStringAsync().Result;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的自定义对象看起来像这样;

public class Test
{
    public int Id { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果我发布一些样本数据,如

<Test>
    <Id>12345</Id>
    <Name>My Name</Name>
</Test>
Run Code Online (Sandbox Code Playgroud)

jsonContent中的结果值是正确的.我的问题是我应该如何最好地将HttpRequestMessage(内容)序列化到我的对象Test中,以便我可以执行其他验证/任务等.

我应该将HttpRequestMessage传递给方法还是可以传递类似的东西

public void Test(Test oTest)
Run Code Online (Sandbox Code Playgroud)

woo*_*ers 6

听起来你正在问如何将jsonContent反序列化为Test类的新实例,正如上面提到的第一条评论.我建议调查Json.NET.然后你可以这样做:

public class TestController : ApiController
{
  [HttpPost]
  public void Test(HttpRequestMessage request)
  {
    var content = request.Content;
    string jsonContent = content.ReadAsStringAsync().Result;
    Test test = new Test();
    test = JsonConvert.DeserializeObject<Test>(jsonContent);
    //Do validation stuff...
  }
}
Run Code Online (Sandbox Code Playgroud)