JMESPath中的动态/计算键? [英] Dynamic/computed keys in JMESPath?
本文介绍了JMESPath中的动态/计算键?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
来自ES2015的计算属性和 Array.reduce / < a href =https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map =noreferrer> Array.map / Object.assign :
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})).reduce((a, b) => Object.assign(a,b), {})
...并获取:
{ foo: 43, bar: 55 }
如何从JMESPath获取此信息?
How do I get this from JMESPath?
尝试:
$echo '[{"name": "foo", "age": 43}, {"name": "bar", "age": 55}]' | jp [].{name:age}
[
{
"name": 43
},
{
"name": 55
}
]
推荐答案
问题
- 如何构造返回具有任意键值对的对象的Jmespath查询
- 键需要是动态的,基于jmespath过滤表达式的输出
- 截至撰写本文时(2019-03-22),标准Jmespath中没有动态密钥
- 但是,可以返回列表列表而不是对象列表,只是后处理jmespath之外的列表列表
[*].[@.name,@.age]
退货
Returns
[['foo', 43], ['bar', 55]]
然后可以发布-Pro在Jmespath以外的地方,如果这是你的选择。
Which can then be post-processed outside of Jmespath, if that is an option for you.
- github issue about this exact use-case
这篇关于JMESPath中的动态/计算键?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文