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

JsonPath表达式条件不生效,如何筛选指定Sales Organization的队列事件?

解决JQ过滤Sales Organization事件的问题

问题根源

你当前使用的过滤器失效,是因为JQ在布尔判断中会把空数组视为true。当子表达式$.dataScope.KEY[?(@.scope=='Sales Organization' && @.value=='180C')]返回空数组时,外层的?()条件依然会判定为真,导致不符合条件的事件被保留。

正确的过滤器写法

要实现只保留Sales Organization="180C"的事件,需要用any()函数明确判断数组中是否存在匹配的元素:

$.[?(.dataScope.KEY[] | any(.scope == "Sales Organization" and .value == "180C"))]

或者更简洁的写法:

$.[? any(.dataScope.KEY[]; .scope == "Sales Organization" and .value == "180C")]

验证逻辑

  • 当事件的dataScope.KEY中存在scope="Sales Organization"且value="180C"的元素时,any()返回true,事件会被保留。
  • 当没有匹配元素时,any()返回false,事件会被过滤掉。

测试示例

假设你有以下两个事件:

[
  {
    "eventID": "event1",
    "dataScope": {
      "KEY": [
        {"scope": "Sales Organization", "value": "180C"}
      ]
    }
  },
  {
    "eventID": "event2",
    "dataScope": {
      "KEY": [
        {"scope": "Sales Organization", "value": "190B"}
      ]
    }
  }
]

使用上述过滤器后,只会返回event1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 22:55:27