我可以在JsonPath语言中使用Camel Simple Expression吗?

时间:2016-07-27 09:39:03

标签: apache-camel jsonpath

您好我想使用我的camel exchange中的标头值作为我的JsonPath表达式中的过滤条件。

有些想法:

.setBody().jsonpath("$.person[?(@.role=='${headers.role}')]")

简单表达式不会以这种方式解决。

如何使用Apache Camel完成此操作?

2 个答案:

答案 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。