我可以在 JsonPath 语言中使用 Camel 简单表达式吗?

Can I use Camel Simple Expression inside JsonPath Language?

您好,我想在我的 JsonPath 表达式中使用来自我的骆驼交换的 header 值作为过滤条件。

有些想法是这样的:

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

简单表达式不会这样解析。

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

不,这在语法中是不可能的,但这是个好主意。所以我记录了一张票:https://issues.apache.org/jira/browse/CAMEL-10189

如果我们开箱即用,那么它适用于任何 DSL,例如 Java 和 XML DSL。

我发现了一种使用处理器组件和一些 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);

但我对这个解决方案不太满意。所以如果你有更好的方法,请告诉我。