嗨我想在我的駱駝交換中使用一個頭部值作爲我的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 已得到解決(這或多或少地與您一樣做)。我刪除了我的答案。 –