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

如何在JSONata中使用不等于判断进行字符串过滤?

JSONata过滤特定字符串值的正确写法

输入JSON

{"Account": {"Account Name": "Firefly","Order": [{"OrderID": "order103","Product": [{"ProductName": "Hat","Quantity": 2},{"ProductName": "Trilby hat","Quantity": 1}]}]}}

需求

提取所有ProductName不等于'Hat'的值,期望输出:

["Trilby hat"]

原查询问题分析

原查询语句:

Account.Order.Product.ProductName!='Hat'?Account.Order.Product.ProductName

实际输出为["Hat","Trilby hat"],原因是:

  • Account.Order.Product.ProductName!='Hat'会生成布尔数组[false, true]
  • JSONata中三元运算符的条件只要数组存在真值,就会执行后续的全部数组返回逻辑,而非逐个过滤元素

正确查询写法

写法一(简洁语法)

直接在Product数组后添加过滤条件,再提取ProductName:

Account.Order.Product[ProductName != 'Hat'].ProductName

写法二(使用$filter函数)

通过$filter函数遍历数组并筛选符合条件的元素:

Account.Order.Product[$filter($, function($v) { $v.ProductName != 'Hat' })].ProductName

两种写法均可得到期望输出:

["Trilby hat"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 21:33:13