嗨我想在我的骆驼交换中使用一个头部值作为我的JsonPath表达式中的过滤条件。我可以在JsonPath语言中使用骆驼简单表达式吗?
Somethink这样的:
.setBody().jsonpath("$.person[?(@.role=='${headers.role}')]")
简单的表达就不会被解决这种方式。
我该如何使用Apache Camel完成这项工作?
嗨我想在我的骆驼交换中使用一个头部值作为我的JsonPath表达式中的过滤条件。我可以在JsonPath语言中使用骆驼简单表达式吗?
Somethink这样的:
.setBody().jsonpath("$.person[?(@.role=='${headers.role}')]")
简单的表达就不会被解决这种方式。
我该如何使用Apache Camel完成这项工作?
我发现了一个办法,把它与处理器组件和一些Java代码来完成:
String jsonpathFilter = SimpleLanguage.simple(
"$.person[?(@.role=='${headers.role}')]").evaluate(exchange, String.class);
String result = new JsonPathExpression(jsonpathFilter).evaluate(exchange, String.class);
exchange.getIn().setBody(result);
但我不是很高兴与此解决方案。所以如果你知道更好的方法,请告诉我。
不,这是不可能的直接在语法中,但它是一个好主意。所以我已经登录了一张票:https://issues.apache.org/jira/browse/CAMEL-10189
如果我们有这个开箱即用的话,它适用于任何DSL,比如Java和XML DSL。
谢谢,这将使它在未来更容易。 – JBernhardt
Gotcha - 在这种情况下,您自己的解决方案是首选的,直到CAMEL-10189 已得到解决(这或多或少地与您一样做)。我删除了我的答案。 –