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

JSONPath如何获取条件匹配结果的首个元素对应字段值

问题场景

需实现如下JSONPath查询逻辑:遍历结果列表,当列表项的t_evap字段值大于阈值881时,仅返回第一个匹配项对应的time字段值。
测试过程中遇到两类异常:

  • 使用表达式$.data[?(@.t_evap> 881)].time查询时,会返回所有匹配结果[100, 200],无法满足仅取首个匹配值的需求
  • 尝试调整为$.data[?(@.t_evap> 881)].time[0]时,表达式会错误尝试提取每个time值的首个字符,由于time为数字类型会直接触发报错

待查询的JSON结构如下:

{
    "data": [
        {
            "time":  0.00000000000000E+000,
            "p_evap":  3.78425000000000E+003,
            "t_evap":  8.80000000000000E+002,
            "a_evap":  2.15910676000000E-001,
            "p_cond":  3.78425000000000E+003,
            "t_cond":  8.80000000000000E+002,
            "a_cond":  2.15910676000000E-001
        },
        {
            "time":  1.00000000000000E+002,
            "p_evap":  3.86011552200429E+003,
            "t_evap":  8.81574884518309E+002,
            "a_evap":  2.15062064174011E-001,
            "p_cond":  3.87066987863156E+003,
            "t_cond":  8.80894133103899E+002,
            "a_cond":  2.16937100305237E-001
        },
        {
            "time":  2.00000000000000E+002,
            "p_evap":  3.91391364701754E+003,
            "t_evap":  8.82989737115102E+002,
            "a_evap":  2.11843836231414E-001,
            "p_cond":  3.95342159379127E+003,
            "t_cond":  8.81491251833285E+002,
            "a_cond":  2.20305806875845E-001
        }
    ],
    "error_count": 0,
    "error_messages": []
}
解决方案

错误写法的核心问题是下标位置放置错误:将[0]写在.time后面,代表对筛选后得到的每一个time值单独取下标,数字类型不存在下标索引,自然会触发报错。

正确的JSONPath表达式需要先对筛选得到的匹配对象数组取第一个元素,再读取该元素的time字段,写法如下:

$.data[?(@.t_evap > 881)][0].time

该表达式的执行逻辑:

  • 定位到根节点下的data数组
  • 过滤出所有t_evap字段值大于881的数组元素,组成匹配结果数组
  • 取匹配结果数组的第一个元素(下标为0)
  • 读取该元素的time字段值

针对给出的示例JSON,该表达式会直接返回预期结果100,兼容Goessner原版JSONPath、Jayway JsonPath等绝大多数主流JSONPath实现。

注:如果使用的JSONPath实现支持切片语法,也可以用$.data[?(@.t_evap > 881)][:1].time达到同样效果,返回结果为仅包含第一个匹配值的单元素数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 06:21:47