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

如何在JMESPath查询中结合length函数访问JSON数组元素?

解决JMESPath中用数组长度作为索引的问题

JMESPath的数组索引语法[]内不支持直接嵌入函数调用,所以locations[length(locations)]这种写法不符合语法规则,得用管道表达式来实现函数结果到索引的传递。

核心原因

JMESPath规定数组方括号内只能填数字字面量、切片表达式,或者通过变量引用的计算值,不能直接在索引位置调用函数。

正确写法示例

假设你需要基于数组长度获取对应位置的元素(注意数组索引从0开始,length(locations)得到的是元素总数,直接用它作为索引会越界,通常要减1取最后一个元素):

length(locations) | locations[@ - 1]

对示例JSON执行这个查询,会返回最后一个元素:

{ 
  "name": "Olympia", 
  "state": "WA" 
}

如果只是想直接取数组最后一个元素,JMESPath支持更简洁的负索引写法:

locations[-1]

如果确实需要用长度值作为索引(哪怕越界返回null),可以用:

length(locations) | locations[@]

原理说明

管道|会把前一个表达式的结果作为当前上下文@,这样就能把length(locations)的输出值传递给后续的数组索引操作,实现动态索引的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 09:22:05