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

Parsing nested query string from URI in WebAPI

我正在从 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() 路线,但如果这是唯一可行的选择,我愿意。

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

var referral = model.Data.Merges.Referral;

希望有人能帮忙,谢谢。

就这样做吧-

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


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

现在为我工作。