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

如何编写二维JSON数组表达式并提取指定stype的rid

一、二维JSON数组的JPath表达式编写
  • 定位二维数组:通过层级路径直接定位,比如顶层的二维数组Data,用$.Data即可;若嵌套在其他对象下,格式为$.父对象.子对象.Data。
  • 访问具体元素:
    • 取某一行:$.Data[0](获取第一行数组,索引从0开始)
    • 取某一行的某一列:$.Data[0][3](获取第一行第四列的元素)
    • 遍历所有行:$.Data[*](匹配二维数组里的每一行)
    • 遍历所有行的指定列:$.Data[*][0](获取每一行第一列的元素)
  • 过滤行数据:使用[?()]语法,@代表当前遍历的行数组,通过列索引设置判断条件,比如筛选第四列值为1182的行:$.Data[?(@[3]==1182)]
二、提取stype=1182的所有rid数据

给定JSON数据

{
  "Master": "SMaster",
  "Field": [
    "rid",
    "sid",
    "sname",
    "stype",
    "isPrimary"
  ],
  "Data": [
    [150986,55,"PERF_01",1182,1],
    [150987,55,"PERF_01",1182,1],
    [150988,55,"PERF_01",1187,1]
  ],
  "ErrorCode": "0",
  "ErrorMsg": "",
  "Next": "0"
}

原表达式问题分析

你尝试的$..[?(@.data[*][2]==1182)].data[0][0]存在三个问题:

  1. JSON中的键是大写Data,不是小写data;
  2. 条件判断逻辑错误:@.data[*][2]无法正确指向行内的stype字段,stype对应Field的第4个元素,索引为3;
  3. 仅提取了第一行的rid,未遍历所有符合条件的行。

正确JPath表达式

$.Data[?(@[3]==1182)][*][0]
  • 逻辑说明:
    1. $.Data定位到目标二维数组;
    2. [?(@[3]==1182)]筛选出stype(索引3)值为1182的行;
    3. [*][0]提取这些行中rid对应的索引0的元素。

执行后将得到结果:[150986, 150987]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 14:30:33