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

如何用JMESPath根据指定值导出JSON对象的键?查询返回空数组

解决JMESPath筛选指定值对应键的问题

你当前使用的查询keys(@)[?contains(@, '0')]无效的核心原因是逻辑错误:keys(@)返回的是所有键的字符串数组,此时过滤条件里的@指代的是每个键本身,而你要筛选的是键对应的值为"0",并非键字符串包含"0",所以会返回空数组。

正确查询写法

要实现需求,需要先将原对象转换为键值对数组,再过滤值符合条件的项,最后提取对应键:

to_entries(@)[?value == '0'].key

分步解释

  • to_entries(@):把原对象转换成包含{"key": "af", "value": "0"}结构的数组,让键和值能被单独筛选。
  • [?value == '0']:过滤出value字段等于"0"的键值对项。
  • .key:提取这些项中的key字段,得到目标键的数组。

结果验证

用你的JSON数据执行上述查询,会返回:

["af", "dz"]

如果你需要你期望的集合格式({"af", "dz"}),可以用set()包裹查询:

set(to_entries(@)[?value == '0'].key)

执行后将返回符合你预期的集合结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:24:11