JMESPath cheat sheet
The everyday JMESPath expressions at a glance, over the team document. Press ▶ to run one.
The document the examples run on
{
"team": "Platform",
"office": { "city": "Berlin", "floor": 3 },
"members": [
{ "name": "Ada", "age": 36, "role": "lead", "active": true,
"email": "[email protected]", "skills": ["rust", "sql"] },
{ "name": "Linus", "age": 28, "role": "dev", "active": true,
"email": null, "skills": ["c", "shell"] },
{ "name": "Grace", "age": 45, "role": "dev", "active": false,
"skills": ["cobol"] },
{ "name": "Alan", "age": 41, "role": "qa", "active": true,
"email": "[email protected]", "skills": [] }
]
}| Query | What it does | Run it |
|---|---|---|
office.city | a sub-expression | Try it |
members[0] | an array element | Try it |
members[-1].name | the last element | Try it |
members[1:3] | a slice | Try it |
members[*].name | project a field from every element | Try it |
members[*].skills[] | flatten nested lists | Try it |
members[?age > `30`] | a filter (numbers use backtick literals) | Try it |
members[?role == 'dev' && active] | combined conditions (strings use quotes) | Try it |
members[?contains(skills, 'sql')].name | a function in a filter | Try it |
members[*].{who: name, years: age} | build objects | Try it |
members[*].[name, age] | build lists | Try it |
office.* | every value of an object | Try it |
length(members) | count | Try it |
sort_by(members, &age)[*].name | sort | Try it |
max_by(members, &age).name | the element with the largest value | Try it |
join(', ', members[*].name) | join into a string | Try it |
members[*].skills | [0] | a pipe ends a projection | Try it |