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

根节点为无名数组时如何使用JsonPath的length()获取数组长度

获取JsonPath顶层无外层键数组的长度

$.length()和$.*.length()不生效的原因很简单:当根节点本身就是数组时,$.后接方法或属性会被解析为遍历根下所有子元素,逐个计算每个子元素的长度,根本不会作用到根节点本身,自然拿不到你要的顶层数组长度。
根据你使用的JsonPath实现不同,选对应写法即可:

  • 如果你用的是Jayway JsonPath(Java生态主流实现、大部分后端JsonPath依赖、多数在线JsonPath调试工具的默认引擎):直接写length($)就行。这个写法明确把根节点$作为length函数的入参,不会触发子元素遍历,直接返回顶层数组的元素总数。
    拿你给出的结构测试,包含2个对象的顶层数组执行该路径会直接返回数值2,和你之前取嵌套数组长度的效果完全一致。
  • 如果你用的是JS生态的Goessner系JsonPath实现(前端常用的jsonpath、jsonpath-plus库):写$.length就可以,注意不要加函数括号,这类实现里length是数组节点的自带属性,不需要通过函数调用读取。
  • 要是你用的是不支持函数传参的老旧JsonPath版本,可以用兼容写法曲线实现:通过$[(@.length-1)]拿到数组最后一个元素的索引,结果加1就是数组总长度,这个写法几乎适配所有版本的JsonPath。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:12:22