【问题标题】:JSON Query with wildcard?带通配符的 JSON 查询?
【发布时间】:2021-11-24 14:35:26
【问题描述】:

我是 JSON Query 的新手,尝试做一个简单的任务,但我无法在网上找到我正在工作的解决方案。

我有一个这样的 json 文档:

[    {
    "folder" : "User/Admin/UserA",
    "User" :  "Linda"
},
 {
    "folder" : "User/Service/UserB",
    "User" :  "John"
},
{
    "folder" : "User/Admin/UserC",
    "User" :  "Peter"
} ]

我想获取User/Admin/下的所有数组元素。

这个查询给我一个结果$..[?(@.folder==["User/Admin/UserA"])]

如何使用 $..[?(@.folder==["User/Admin/*"])] 等通配符使其更具动态性?

https://www.jsonquerytool.com/测试

感谢您的帮助

【问题讨论】:

    标签: json json-query


    【解决方案1】:

    您可以将 SelectToken 与 LINQ 和 Contains 一起使用。对于更复杂的搜索,您也可以使用 .StartsWith 或 .EndWith。

    var json = "...your json";
    
    var jsonArr = JArray.Parse(json);
    
    var users = jsonArr.ToArray()
    .Where(m => m.SelectToken("folder").ToString().Contains("User/Admin/"))
    .Select(u => u.SelectToken("User")).ToList();
    

    结果

      Linda
      Peter
    

    var usersFolders = jsonArr.ToArray()
    .Where(m => m.SelectToken("folder").ToString().Contains("User/Admin/")).ToList();
    

    结果

    "folder": "User/Admin/UserA"
    "User": "Linda"
    
    "folder": "User/Admin/UserC"
    "User": "Peter"
    

    【讨论】:

    • 感谢您的回复,但我不知道如何转换您的解决方案以适应我的问题。我需要它在 jsonpath 语法中
    猜你喜欢
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 2015-06-26
    • 2012-04-18
    相关资源
    最近更新 更多