JMESPath中的动态/计算键? [英] Dynamic/computed keys in JMESPath?

查看:142
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆