Dynamic/computed Keys In JMESPath?
From ES2015 with computed properties and Array.reduce/Array.map/Object.assign you can do: [{name: 'foo', age: 43}, {name: 'bar', age: 55}].map( o => ({[o.name]: o.age})).re
Solution 1:
Problem
- How to construct a Jmespath query that returns objects with arbitrary key-value pairs
- The keys need to be dynamic, based on the output of a jmespath filter expression
Workaround
- As of this writing (2019-03-22), dynamic keys are not available in standard Jmespath
- However, it is possible to return a list of lists instead of a list of objects, and simply post-process that list of lists outside of jmespath
Example
[*].[@.name,@.age]
Returns
[['foo', 43], ['bar', 55]]
Which can then be post-processed outside of Jmespath, if that is an option for you.
See also
Solution 2:
To get this result precisely: { foo: 43, bar: 55 }
, you should use this query:
@.{foo: @[0].age, bar: @[1].age}
But as you can see I don't retrieve the keys foo and bar dynamically because I can't do it in JMES Path
Post a Comment for "Dynamic/computed Keys In JMESPath?"