如何用JSONPath表达式多字段判断条件:验证click事件状态为success
JSONPath验证click事件状态的布尔结果实现
给定如下JSON数据:
[{ "event": "click", "status": "success", "test": true }, { "event": "send", "status": "success", "test": true }, { "event": "checked", "status": "failure", "test": false }]
你需要验证event为click的项对应的status是否为success,并直接返回布尔值true或false,可以参考以下几种JSONPath写法:
方法一:通过匹配结果的存在性判断
使用表达式:$.[?(@.event == 'click' && @.status == 'success')]
这个表达式会筛选出同时满足event为click且status为success的项。如果结果数组不为空,就说明条件成立,对应布尔值true;如果为空则为false。多数JSONPath工具会在匹配到结果时返回非空数组,未匹配到返回空数组,可基于这个特性判断布尔结果。方法二:直接转布尔值(部分引擎支持)
如果你的JSONPath引擎支持逻辑转换,可使用:!!$.[?(@.event == 'click')].status == 'success'
先通过$.[?(@.event == 'click')].status获取click事件的status值,再与'success'做相等判断,最后用!!将结果转为布尔值。方法三:直接断言判断(部分引擎支持)
有些JSONPath实现允许直接在表达式中做相等断言,比如:$.[?(@.event == 'click')].status === 'success'
这个表达式会直接返回布尔值true或false,注意不同引擎对运算符的支持差异,部分引擎可能只支持==而非===。
内容的提问来源于stack exchange,提问作者sashmi
相关产品推荐
相关产品推荐

