JMESPath中的动态/计算键?

时间:2017-07-21 11:51:41

标签: javascript arrays computed-properties jmespath

从ES2015开始,您可以执行computed propertiesArray.reduce / Array.map / Object.assign

{ foo: 43, bar: 55 }

...并获得:

$echo '[{"name": "foo", "age": 43}, {"name": "bar", "age": 55}]' | jp [].{name:age}
[
  {
    "name": 43
  },
  {
    "name": 55
  }
]

如何从JMESPath获取此内容?

尝试:

AsIs

2 个答案:

答案 0 :(得分:0)

问题

  • 如何构造一个Jmespath查询,该查询返回具有任意键值对的对象
  • 根据jmespath过滤器表达式的输出,键必须是动态的

解决方法

  • 截至撰写本文(2019-03-22)时,标准Jmespath中不提供动态键
  • 但是,可以返回列表列表而不是对象列表,并且只需在jmespath之外对列表列表进行后处理

示例

!!fieldWithErrors
  

返回

 [*].[@.name,@.age]

如果可以的话,可以在Jmespath外部进行后处理。

另请参见

答案 1 :(得分:0)

要精确获得此结果:{ foo: 43, bar: 55 },应使用以下查询:

@.{foo: @[0].age, bar: @[1].age}

但是您可以看到,我无法动态检索键foo和bar,因为我无法在JMES路径中完成