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

如何基于子节点筛选条件使用JSONPath提取父级items指定字段

可以通过JSONPath实现该需求,不需要从内层匹配节点向上回溯,调整筛选逻辑的层级即可。

核心筛选逻辑

你的原写法是先定位到内层的meta节点再尝试向上取父节点,而标准JSONPath没有提供向上遍历的操作符,因此换个思路:直接从你要获取的目标节点(即items数组的元素)层级开始做过滤,嵌套判断内层meta是否满足条件即可。

符合要求的筛选表达式如下:

$.items[?(@.album.meta[?(@.name == 'CreatedBy' && @.value == 'Karen')].length > 0)]

部分JSONPath实现判断数组非空不需要加.length>0,简写为$.items[?(@.album.meta[?(@.name == 'CreatedBy' && @.value == 'Karen')])]即可生效

该表达式的逻辑为:遍历根节点下的items数组,对每一个item节点,检查其下属album.meta数组中是否存在同时满足name为CreatedBy、value为Karen的元素,存在则保留当前item节点,筛选结果就是你需要的上层item对象,而非内层的meta元素。

提取指定字段

如果你的JSONPath运行环境支持字段投影,在上述表达式后追加字段选择,即可仅返回id和name字段:

$.items[?(@.album.meta[?(@.name == 'CreatedBy' && @.value == 'Karen')])]['id','name']

运行后返回结果为:

[
  {
    "id": 1,
    "name": "item1"
  }
]

在外层套一层{"items": 上述结果}即可完全匹配你给出的预期返回格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:27:00