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

如何用JMESPath将嵌套数组与同层级prefix键拼接得到目标字符串数组

解决方案

问题原因

你之前的写法返回null或报错的核心原因是:map函数中lambda表达式的默认上下文是postfix数组的单个元素(即"aaa"/"bbb"这类字符串),这个上下文里不存在prefix属性,因此无法直接访问外层对象的prefix值。

正确查询语句

使用let表达式提前绑定外层的prefix值,再在map内部引用即可,完整命令如下:

cat multiple.json | jp "[*].let({pre: prefix}, &map(&join('', [$pre, @]), postfix))[]"

执行后会直接输出你期望的结果:

[
  "one-aaa",
  "one-bbb",
  "one-ccc",
  "two-aaa",
  "two-bbb",
  "two-ccc"
]

语法说明

  • let({pre: prefix}, &...):遍历每个外层对象时,把当前对象的prefix值绑定到变量pre,后续在第二个参数的表达式内可以用$pre引用这个值
  • 内层map函数使用绑定好的$pre和当前遍历的postfix元素@拼接字符串
  • 末尾的[]用来把两层数组合并打平为一维数组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:18:02