16

单独使用单个 JSONPath 表达式,是否可以执行某种 'OR' 或 '||' 操作员。例如,这两个 JSONPath 布尔表达式用于检查日志 JSON 文件的严重性:

$..log[?(@.severity == 'WARN')]

$..log[?(@.severity == 'Error')]

但我想做一些逻辑上类似的事情:

$..log[?(@.severity == 'WARN' or @.severity == 'Error')] //this is not correct 

有没有办法做到这一点?

4

2 回答 2

22

如果您使用的是 Goessner 的解析器,则可以||在表达式中使用运算符,如下所示:

$..log[?(@.severity == 'WARN' || @.severity == 'Error')]
于 2015-08-20T08:15:49.707 回答
9

JSONPath 页面

[,] - XPath 中的联合运算符导致节点集的组合。JSONPath 允许将备用名称或数组索引作为一组。

尝试

$..log[?(@.severity == 'WARN'), ?(@.severity == 'Error')]

编辑:看起来逻辑 AND 和 OR 运算符存在一个未解决的问题,其中它们声明JSONPath尚不支持这些运算符。

于 2014-05-27T19:50:19.003 回答