从ApacheCamel标头中的json-array中提取值

时间:2017-09-20 15:09:38

标签: apache-camel jsonpath

我想使用jsonpath从头部内的JSON数组中提取一个值。

headers.barcodes:

 [ { "barcodeValue" : "123456789" , "type" : "CODE128" , `"pageNumber" : 1}]

我发现的唯一方法是使用正文来提取值:

<setBody>
  <simple>${headers.barcodes}</simple>
</setBody>
<setHeader headerName="barcodeValueOnly">
   <jsonpath>$[0].barcodeValue</jsonpath>
</setHeader>

我试图像这样传递标题:

<jsonpath>${headers.barcodes}[0].barcodeValue</jsonpath>

但我得到的只是

com.jayway.jsonpath.InvalidPathException:无法从位置2开始解析令牌。预计?,&#39;,0-9,*

有没有办法在不使用正文的情况下将标题值直接传递给jsonpath?

1 个答案:

答案 0 :(得分:2)

这在jsonpath上是不可能的,但是我们在xpath等其他语言上有这样的功能,你可以配置headerName选项来告诉它从该头而不是消息体中获取输入

所以我在下一个版本中记录了添加此类功能的票证:https://issues.apache.org/jira/browse/CAMEL-11796