有没有办法动态过滤 JSON?

Posted

技术标签:

【中文标题】有没有办法动态过滤 JSON?【英文标题】:Is there a way to dynamically filter the JSON? 【发布时间】:2021-11-09 21:33:38 【问题描述】:

我正在寻找一种根据来自 URL 的请求过滤 JObject 的方法。第二个代码块按预期工作并从响应中删除“Id”列:

我的 JObject:

JObject rss = new(
                    new JProperty("Name", name),
                    new JProperty("Surname",
                         new JArray(from p in data select p.sname)),
                    new JProperty("Id",
                         new JArray(from p in data select p.id)))

我尝试过的:

var fields = rss.Descendants()
                           .Where(x => x.Type == JTokenType.Property)
                           .Cast<JProperty>()
                           .Where(x => x.Name == "Id").ToList();
                foreach (var field in fields)
                
                    field.Remove();
                 

但是,我无法找到一种方法来执行此过程以删除请求的字段或仅返回所需的字段。除了 GraphQL 之外,还有什么方法可以做这种类型的过程吗?

【问题讨论】:

【参考方案1】:

如果您想手动从 JObject 中删除属性,您可以执行以下操作:

var requestedPaths = new[]  "Name" ;
foreach (var prop in rss.Descendants().OfType<JProperty>().ToList())

    if (!requestedPaths.Contains(prop.Path))
    
        prop.Remove();
    

【讨论】:

以上是关于有没有办法动态过滤 JSON?的主要内容,如果未能解决你的问题,请参考以下文章

Jupyterlab 表动态输出(排序,过滤,...)

使用动态条件过滤 JSON 数组

元数据库 - 从 json 字段创建过滤器

vuejs的动态过滤

如何在ColdFusion 2016中动态设置电子表格自动过滤器?

在 Spring Data rest json Response 中动态过滤实体字段