阿帕奇骆驼:替换功能

时间:2018-06-30 07:56:51

标签: replace apache-camel transform

我想在Apache骆驼中使用替换功能,但是有麻烦。这是我的代码:

"firstName" : "aaa",
"lastName" : []

我的愿望输出是这样的:

"firstName" : "aaa",
"lastName" : ""

我将以下代码用于转换:

<transform> 
<simple>${body.replace("[]","")}</simple> 
</transform>

但是问题没有显示双引号,实际上我明白了:

"firstName" : "aaa",
"lastName" :

我也使用了“,但不起作用。预先感谢

1 个答案:

答案 0 :(得分:1)

我猜正确的替换调用将包含转义的双引号(我使用Java DSL)

.transform(simple("${body.replace('[]', '\"\"')}"))

但是不起作用,结果中不会显示空的双引号。也许它们被“评估为空”。

Original body: "firstName" : "aaa" "lastName" : []
Transformed body: "firstName" : "aaa" "lastName" :

但是,您可以执行解决方法,方法是将第一步中的空括号替换为“特殊帮助字符” 只是为了确保替换字符串不能被解释为空。在下面的示例中,我使用了加号(+)。

第二步中,您可以不使用任何内容替换辅助字符,因此,空双引号会保留在结果中。

.transform(simple("${body.replace('[]', '+\"\"')}"))
.transform(simple("${body.replace('+', '')}"))

这对我有用。

Original body: "firstName" : "aaa" "lastName" : []
Transformed body: "firstName" : "aaa" "lastName" : ""

您将需要使用身体中不包含的辅助字符。否则,第二步可能会删除您不想删除的内容。