gpt4 book ai didi

用于检查 Apache Camel XML 中字符串的 JSONPath 表达式

转载 作者:行者123 更新时间:2023-12-05 01:04:04 26 4
gpt4 key购买 nike

假设我有一个简单的 json 文件,如下所示

{
"log": {
"host": "blah",
"severity": "INFO",
"system": "1"
}
}

我正在使用 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>

我真正感到困惑的部分是 JSONPath 表达式。我上面的表达式甚至在语法上都不正确,因为在您不尝试对元素列表进行排序的情况下,很难找到示例。我的目标是仅在日志的严重性为“警告”时发送电子邮件,但我无法想出表达式。

最佳答案

这对我使用 Camel 2.13.1 有效(我检查了 INFO 因为你的 JSON 示例有这个 severity ;你可以根据你的需要改变它):

<jsonpath>$..log[?(@.severity == 'INFO')]</jsonpath>

请注意 ..[] .但是,使用单个点 .在搜索路径的开头失败:
<jsonpath>$.log[?(@.severity == 'INFO')]</jsonpath>

错误消息说:
java.lang.IllegalArgumentException: Invalid container object

这可能是一个错误。

根据 JSON 路径 doc , ..代表“递归下降”。这可能不符合您的要求。但是,作为单点 .没有用,这是我想到的唯一可能的解决方法。否则,您可能会收到错误票。

关于用于检查 Apache Camel XML 中字符串的 JSONPath 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23816560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com