OR operator in JSONPath?

一笑奈何 提交于 2019-12-29 07:33:08

问题


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?


回答1:


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.




回答2:


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!