Apache Camel: заменить функцию - PullRequest
0 голосов
/ 30 июня 2018

Я хочу использовать функцию замены в Apache Camel, но у меня проблемы с этим. вот мой код:

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

и мой вывод желаний таков:

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

Я использую этот код для преобразования:

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

но проблема не в том, чтобы показать двойные кавычки, фактически я получаю это:

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

Я также использовал & quot, но не работает. Заранее спасибо

1 Ответ

0 голосов
/ 04 июля 2018

Я думаю, что правильный вызов замены будет содержать экранированные двойные кавычки (я использую 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" : ""

Вам потребуется использовать вспомогательный символ, который не содержится в вашем теле . В противном случае второй шаг, возможно, удалит то, что вы не хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...