如何使用Jsonata谓词过滤不含指定属性的对象?
筛选JSON数组中不含指定属性的对象
源数据
[ { "a": 1 }, { "a": 2, "b": 1 } ]
已知有效查询(筛选含b的对象)
使用查询语句 $[b] 可筛选出包含属性b的对象,结果为:
{ "a": 2, "b": 1 }
需求:筛选不含b的对象
尝试使用 $[$not(b)] 得到** no match **,是因为该语法不符合标准JSONPath的否定判断规则。
正确查询语句
使用标准JSONPath的过滤表达式,通过否定属性存在性来筛选:
$[?(!@.b)]
返回结果
{ "a": 1 }
语法说明
?():JSONPath的过滤断言,用于对数组元素进行条件判断@:代表当前遍历到的数组元素!@.b:判断当前元素不存在b属性(当元素没有b时,@.b返回undefined,取反后为true,满足过滤条件)
内容的提问来源于stack exchange,提问作者Mikhail
相关产品推荐
相关产品推荐

