1

I am new with JSON Query, trying to do a simple task but I could not find a solution online that I got working.

I have a json document like this:

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

I want to get all array elements under User/Admin/.

This Query gets me one result $..[?(@.folder==["User/Admin/UserA"])]

how can I make it more dynamic with a wildcard like $..[?(@.folder==["User/Admin/*"])]?

Tested with https://www.jsonquerytool.com/

Thank you for any help

SahnAlbert
  • 11
  • 1

2 Answers2

0

you can use SelectToken with LINQ and Contains. For more complicated search you can use .StartsWith or .EndWith too.

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();

result

  Linda
  Peter

or

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

result

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

"folder": "User/Admin/UserC"
"User": "Peter"
Serge
  • 40,935
  • 4
  • 18
  • 45
  • thanks for the reply, but I cant see how I can transform your solution to fit my problem. I need it in jsonpath syntax – SahnAlbert Nov 25 '21 at 08:12
0

With ~Q (disclosure: I'm the main developer):

https://github.com/xcite-db/Unquery

{
    "#return:[]?folder starts_with 'User/Admin'": ["."]
}

Result:

[
    {
        "folder": "User/Admin/UserA",
        "User": "Linda"
    },
    {
        "folder": "User/Admin/UserC",
        "User": "Peter"
    }
]
Sela M.
  • 21
  • 2