从WebAPI中的URI解析嵌套查询字符串

时间:2016-02-22 13:55:45

标签: c# .net asp.net-web-api2 datacontract

我从MailChimp回调中获取以下示例数据:

type: subscribe
data[id]: 5h3872nb33
data[merges][REFERRAL]: 83HJS

它在URI中编码,如:

?type=subscribe&data%5Bid%5D=65761e38d6&data%5Bmerges%5D%5BREFERRAL%5D=3TVPQ

?type=subscribe&data[id]=65761e38d6&data[merges][REFERRAL]=3TVPQ

我的控制器如下

public bool Get([FromUri]CallbackModel model)
{
    // Process request
}

使用模型:

public class CallbackModel
{
    public string Type { get; set; }

    public CallbackData Data { get; set; }
}

public class CallbackDataModel
{
    public string Id { get; set; }
}

我已经省略了各种尝试,以良好的方式获得data[merges][REFERRAL],但我开始相信它不可能。

我试图避开Request.GetQueryNameValuePairs()路线,但愿意这是唯一可行的选择。

理想情况下,合并字段是Data的属性:

var referral = model.Data.Merges.Referral;

希望有人能提供帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

就这样做 -

public class CallbackData
{
    public string Id { get; set; }
    public A Merges { get; set; }
}


public class A
{
    public string REFERRAL { get; set; }
}

现在为我工作。