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

如何通过JSONPath从查询结果数组中获取第一个元素

问题说明

你处理的JSON结构如下:

{
    "orders":{
        "678238": {
            "orderId": 678238,
            "itemName": "Keyboard"
        },
        "8723423": {
            "orderId": 8723423,
            "itemName": "Flash Drive"
        }
    }
}

使用$..orderId会返回两个orderId组成的数组,尝试$..[0].orderId无法生效的核心原因:

orders字段下存储的是键值对结构的JSON对象,不是有序数组。JSON标准本身不规定对象键的遍历顺序,[0]这类位置下标仅对有序数组生效,无法直接作用在对象属性的递归查询结果上。

正确写法

根据实际使用场景二选一即可:

  • 场景1:明确知道目标订单对应的键值
    这是最稳定、全JSONPath实现兼容的写法,直接指定完整路径即可:
    $.orders["678238"].orderId
    
    该表达式会直接返回目标值678238,不会返回多值数组,也不受解析器的属性遍历顺序影响。
  • 场景2:需要取递归匹配结果集的第一个值
    不要把下标写在递归通配符后面,直接对匹配到的orderId结果集取下标即可:
    $..orderId[0]
    
    注意:该写法依赖JSON解析器的对象属性遍历顺序,不同解析环境可能返回不同结果,不建议在生产环境使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:21:26