JMESPath · lesson 14 of 15 · Functions
Strings, join & map
join(glue, list) builds a string, and map(&expr, list) applies an expression to every element.
Examples
Example 1Join names into one string
Document
{
"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
join(', ', members[*].name)
join(Glue a list of strings into one string.', 'The separator (a raw string).members[*].nameThe list to join.
Result
"Ada, Linus, Grace, Alan"
Example 2Apply an expression to each element
Document
{
"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
map(&length(skills), members)
map(Run an expression on every element of a list and collect the results.&length(skills)The expression, as a reference: how many skills each one has.membersThe list to map over →[2,2,1,0].
Result
[2,2,1,0]
Good to know
contains,starts_with,ends_with,lengthandreversework on strings too:reverse('abc')is"cba".