单独使用单个JSONPath表达式,是否可以执行某种"OR"或"||" 运营商.例如,这两个JSONPath布尔表达式用于检查日志JSON文件的严重性:
$..log[?(@.severity == 'WARN')]
$..log[?(@.severity == 'Error')]
Run Code Online (Sandbox Code Playgroud)
但我想做一些逻辑上相似的事情:
$..log[?(@.severity == 'WARN' or @.severity == 'Error')] //this is not correct
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
假设我有一个简单的json文件,如下所示
{
"log": {
"host": "blah",
"severity": "INFO",
"system": "1"
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Apache Camel,它是Spring XML来处理和路由json文件.我的路由代码看起来像这样:
<route>
<from uri="file:/TESTFOLDER/input"/>
<choice>
<when>
<jsonpath>$.log?(@.severity == 'WARNING')</jsonpath>
<to uri="smtp://(smtpinfo...not important)"/>
</when>
<otherwise>
<to uri="file:/TESTFOLDER/output"/>
</otherwise>
</choice>
</route>
Run Code Online (Sandbox Code Playgroud)
我真正困惑的部分是JSONPath表达式.我上面的表达式甚至在语法上都不正确,因为很难找到你不试图对元素列表进行排序的例子.我的目标是只在日志的严重性为"警告"时发送电子邮件,但我无法提出表达式.