2017-09-20 48 views
1

我想使用jsonpath从头中的JSON数组中提取值。从ApacheCamel头中的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.无法分析令牌启动,”,0-9,*

有没有办法直接通过头部值jsonpath不使用身体?

+0

另一种解决方案(直到功能添加到骆驼)也可以增加一个内嵌处理器。然后你可以将json字符串提取到一个普通变量中。使用实际的jsonpath API来提取值。你不需要将它放在身体中。 –

回答

2

没有这是不可能的jsonpath,但我们有这样的功能在其他语言如xpath,其中有一个headerName选项,您可以配置它告诉它从该标题,而不是邮件正文输入。

因此,我已经登录的入场券在下一版本添加这样的功能:https://issues.apache.org/jira/browse/CAMEL-11796