Search code examples
jsonjsonpath

OR operator in JSONPath?


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?


Solution

  • 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.