◷ Reading Time: 2 minutes
You can use the JSONPath syntax elements to search for data in a collection/ JSON object.
| JSONPath Syntax | Description |
| $ | the root object/element |
| . or [] | child operator |
| .. | recursive descent |
| * | wildcard. All objects/elements regardless their names. |
| [,] | Union operator in XPath results in a combination of node sets. JSONPath allows alternate names or array indices as a set. |
Let’s take the following example.
{
"Classroom": {
"Student": [
{
"Name": "Sarah",
"Subject": "Maths",
"Score": 98
},
{
"Name": "Alex",
"Subject": "Physics",
"Score": 95
},
{
"Name": "Emma",
"Subject": "Biology",
"Score": 86
},
{
"Name": "John",
"Subject": "History",
"Score": 90
}
],
"Teacher": {
"Name": "Sharon" ,
"Subject": "Music"
}
}
}
If you have assigned the Classroom to a variable named ClassroomInfo, this will be the format.
ClassroomInfo|query(<JSONPath>)
For example, to get all the subjects,
ClassroomInfo|query("$..Subject")The following table shows different ways of JSONPath queries you can apply
| JSONPath | Result | |
| 1 | $.Classroom.Student[*].Name | The names of all the students |
| 2 | $..Name | All the names |
| 3 | $.Classroom.* | All attributes in classroom which are students and teacher |
| 4 | $.Classroom..Subject | All the subjects in classroom (students’and the teacher’s) |
| 5 | $..Student[2] | The third student |
| 6 | $..Student[-1:] | The last student |
| 7 | $..Student[0,1] | The first two students |
| 8 | $..* | All members of JSON structure |
The attached FlexRule project demonstrates the above examples.