Using a single JSONPath expression alone, is it possible to do some kind of 'OR' or '||' operator. For example, these two JSONPath boolean expressions work to check the severity of a log JSON file:
$..log[?(@.severity == 'WARN')]
$..log[?(@.severity == 'Error')]
But I'd like to do something logically similar to:
$..log[?(@.severity == 'WARN' or @.severity == 'Error')] //this is not correct
Is there any way to do this?
From the JSONPath page:
[,] - Union operator in XPath results in a combination of node sets. JSONPath allows alternate names or array indices as a set.
Try
$..log[?(@.severity == 'WARN'), ?(@.severity == 'Error')]
Edit: Looks like there is an open issue for logical AND and OR operators in which they state that the operators are not yet supported by JSONPath.
If you are using Goessner's parser, you can use the || operator within your expression as follows:
$..log[?(@.severity == 'WARN' || @.severity == 'Error')]
来源:https://stackoverflow.com/questions/23897661/or-operator-in-jsonpath