179.11. ヘッダーの入力としての使用
Camel 2.20 から利用可能
デフォルトでは、jsonpath はメッセージボディーを入力ソースとして使用します。ただし、headerName
オプションを指定することで、ヘッダーを入力として使用することもできます。
たとえば、books
という名前のヘッダーに保存されている json ドキュメントから本書の数をカウントするには、以下を行うことができます。
from("direct:start") .setHeader("numberOfBooks") .jsonpath("$..store.book.length()", false, int.class, "books") .to("mock:result");
from("direct:start")
.setHeader("numberOfBooks")
.jsonpath("$..store.book.length()", false, int.class, "books")
.to("mock:result");
上記の jsonpath
式ではヘッダー名を 書籍
として指定し、結果を int.class
で整数に変換するように指示します。
XML DSL を使用した場合の同じ例は次のとおりです。
<route> <from uri="direct:start"/> <setHeader headerName="numberOfBooks"> <jsonpath headerName="books" resultType="int">$..store.book.length()</jsonpath> </transform> <to uri="mock:result"/> </route>
<route>
<from uri="direct:start"/>
<setHeader headerName="numberOfBooks">
<jsonpath headerName="books" resultType="int">$..store.book.length()</jsonpath>
</transform>
<to uri="mock:result"/>
</route>