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

如何使用JMESPath从指定键列表中提取对应值?

如何使用JMESPath从指定键列表中提取对应值?

嘿,我来帮你搞定这个JMESPath的小问题!

你现在的需求是从给定对象{"a": "foo", "b": "bar", "c": "baz"}里,根据键列表["b", "c"]提取出对应的["bar", "baz"]对吧?你之前试的map(*.@, ["b", "c"])没起作用,是因为JMESPath里map的语法和你写的不太对,其实有更简单的写法哦!

方法一:直接使用键列表索引

JMESPath支持直接用数组形式的键列表来提取对象的值,表达式非常简洁:

@["b", "c"]

把这个表达式作用在你的目标对象上,就能直接得到["bar", "baz"]。这里的@代表当前的对象上下文,["b", "c"]就是你要提取的键列表,这种写法是最直接高效的。

方法二:使用map函数(如果你更习惯函数式写法)

如果想用map来实现,你需要调整表达式的写法,让map遍历键列表时,从根对象里取出对应键的值:

map(&$[@], ["b", "c"])

这里的&用来创建一个表达式引用,$代表根对象,[@]则是取当前遍历到的键对应的值,这样也能得到你想要的结果。

你之前的写法map(*.@, ["b", "c"])不对,是因为*.@这个表达式在map里没有正确关联到目标对象,没法从对象里获取对应键的值,调整成上面的写法就可以啦!

备注:内容来源于stack exchange,提问作者Ziyuan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 07:04:32