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

如何在JSONPath中通过节点键过滤符合条件的元素?

用JSONPath筛选键大于指定值的对象元素

输入JSON数据

{"data": {"ticket": {"1": "foo","2": "bar","3": "baz"}}}

期望输出

{"3": "baz"}

需求说明

需要筛选ticket对象中**键大于"2"**的元素,已知ticket的所有键都是字符串形式的整数。之前尝试过用$.data.ticket.*~匹配所有节点键,也了解基础筛选语法(比如$..book[?(@.price<10)]),现在需要结合两者实现目标。

解决方案

使用包含键比较的JSONPath表达式:

$.data.ticket[?(@property > '2')]

表达式解析

  • @property:在JSONPath过滤逻辑中,代表当前遍历到的对象的键(对应你之前用*~获取键的需求)
  • [?(@property > '2')]:过滤出键(字符串形式)大于"2"的键值对,因为所有键都是整数形式的字符串,直接字符串比较即可得到正确结果;如果需要严格按数字比较,可以用@property - 0 > 2将键转为数字后再比较:
    $.data.ticket[?(@property - 0 > 2)]
    

验证结果

执行上述表达式后,会返回ticket中键大于"2"的元素,即{"3": "baz"},符合期望输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:30:52