WebApi使用FromBody接收包括动态列表的参数

时间:2016-03-09 16:18:02

标签: asp.net-mvc asp.net-web-api asp.net-web-api2

我正在尝试在webapi中收到以下JSON格式

    {   
    "name": "Matt",
    "age": "24",
    "payload": {"key1": "value1", "key2": "value2"}
    }

这里有效载荷是动态的,它可以有任何键和值。

我的webapi看起来像

    public class Person
    {
        public string name{ get; set; }
        public int age{ get; set; }
        public string payload { get; set; }
    }

    public async Task<HttpResponseMessage> Post([FromBody]Person value)
    {
      // Getting name and age but not payload.
    }

问题

FromBody是获得这个价值的方式吗?如果是的话,我在这里失踪了。如果不是,这类投入的最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

应使用[FromBody]。您可以使用IDictionary<string,string>作为有效负载。

public class Person
{
    public string name{ get; set; }
    public int age{ get; set; }
    public IDictionary<string,string> payload { get; set; }
}


public async Task<HttpResponseMessage> Post([FromBody]Person value)
{
    var value1 = value.payload["key1"];
    var value2 = value.payload["key2"];

}