You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JMESPath中实现标量与数组值的笛卡尔积组合?

在JMESPath中实现标量与数组元素的组合并生成扁平字典数组

当然可以!这个需求用JMESPath的map函数结合对象构造语法就能完美实现,甚至还能顺便把bars字段名改成bar,完全匹配你的预期结果。

核心表达式

直接用这个JMESPath表达式就能搞定:

map(&{"foo": foo, "bar": @}, bars)

表达式拆解

让我给你解释下每部分的作用:

  • map(..., bars):map函数会遍历bars数组中的每一个元素,把后面的匿名函数应用到每个元素上
  • &{"foo": foo, "bar": @}:这是JMESPath的匿名函数语法,&表示这是一个待执行的函数:
    • foo:直接引用顶层字典里的foo标量值(也就是"aa"),保证每个新字典里的foo都和原字典一致
    • @:代表当前遍历到的bars数组元素(第一次是"bb",第二次是"cc"),把它赋值给新字段bar

实际运行效果

输入字典:

{ "foo": "aa", "bars": [ "bb", "cc" ] }

执行表达式后得到的结果:

[ { "foo": "aa", "bar": "bb" }, { "foo": "aa", "bar": "cc" } ]

如果只是需要组合元素而不修改字段名,表达式可以简化为:

map(&{"foo": foo, "bars": @}, bars)

不过显然你需要的是改名后的版本,所以第一个表达式完全符合你的需求。

内容的提问来源于stack exchange,提问作者Christian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:31:56