我可以在 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);
但我对这个解决方案不太满意。所以如果你有更好的方法,请告诉我。
您好,我想在我的 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);
但我对这个解决方案不太满意。所以如果你有更好的方法,请告诉我。