您好我想使用我的camel exchange中的标头值作为我的JsonPath表达式中的过滤条件。
有些想法:
.setBody().jsonpath("$.person[?(@.role=='${headers.role}')]")
简单表达式不会以这种方式解决。
如何使用Apache Camel完成此操作?
答案 0 :(得分:3)
我发现了一种使用处理器组件和一些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);
但我对这个解决方案不太满意。所以如果你知道更好的方法,请告诉我。
答案 1 :(得分:1)
这不可能直接在语法中,但它是一个好主意。所以我记录了一张票:https://issues.apache.org/jira/browse/CAMEL-10189
如果我们开箱即用,那么它适用于任何DSL,例如Java和XML DSL。