When I have a simple JSON like:
{
"name": "Tom",
"age": 20
}
Is there any JMESPath query to get age
only when name
is Tom
?
The query should get 20
with the upper JSON.
But, if the name is not Tom
like:
{
"name": "Bob",
"age": 31
}
The query should return null
.
In order to filter, you will need an array.
And you can get an array from any object with the function to_array
.
Then, because you have an unique object, you can stop the projection created by the filter, and, take the first element of the array, using | [0]
, as explained in the pipe expressions section of the tutorial.
So with the query:
to_array(@)[?name == `Tom`].age | [0]
20
for the JSON
{
"name": "Tom",
"age": 20
}
null
for the JSON
{
"name": "Bob",
"age": 31
}