解析以 JQuery 样式传递的查询字符串 filter/sorting

Parse query string filter/sorting passed in JQuery style

有人知道 C# 中的标准库(或模型联编程序)来解析 JQuery 样式的序列化过滤器(和排序),例如从 Kendo 数据源传递的那个吗?

因此,要将这样的查询字符串解析为具有过滤器和排序对象的强类型数组:

sort[0][field]=status.name&sort[0][dir]=desc&filter[logic]=and&filter[filters][0][field]=status.name&filter[filters][0][operator]=eq&filter[filters][0][value]=Sold

我尝试过搜索,但不幸的是,我似乎大多 运行 不完整的实现或 JavaScript 样本。

更新:直到@Lali 指出这是标准的正文形式序列化,我才意识到这种格式已经得到标准支持。

我现在通过创建一些 类 并将其用作网络 API 操作的参数来解决它,它神奇地起作用了:

public async Task<IHttpActionResult> Get([FromUri] ListSelectionOptionsWithFilter options)
{
   //query something
}

public class ListSelectionOptionsWithFilter
{
    public int? Skip { get; set; }
    public int? Take { get; set; }
    public List<ListSortOption> Sort { get; set; }
    public ListFilterOptions Filter { get; set; }
}

public class ListFilterOptions
{
    public string Logic { get; set; }
    public List<ListFilterOption> Filters { get; set; }
}

public class ListFilterOption
{
    public string Field { get; set; }
    public string Operator { get; set; }
    public string Value { get; set; }
}

public class ListSortOption
{
    public string Field { get; set; }
    public string Dir { get; set; }
}

直到@Lali 指出这是标准的body 表单序列化,我才意识到这种格式已经得到标准支持。

我现在通过创建一些 类 并将其用作网络 API 操作的参数来解决它,它神奇地起作用了:

public async Task<IHttpActionResult> Get([FromUri] ListSelectionOptionsWithFilter options)
{
   //query something
}

public class ListSelectionOptionsWithFilter
{
    public int? Skip { get; set; }
    public int? Take { get; set; }
    public List<ListSortOption> Sort { get; set; }
    public ListFilterOptions Filter { get; set; }
}

public class ListFilterOptions
{
    public string Logic { get; set; }
    public List<ListFilterOption> Filters { get; set; }
}

public class ListFilterOption
{
    public string Field { get; set; }
    public string Operator { get; set; }
    public string Value { get; set; }
}

public class ListSortOption
{
    public string Field { get; set; }
    public string Dir { get; set; }
}