Как обогатить данные, вставив JSON в другой JSON в ESB
Я использую Camel API для маршрутизации в моем проекте с ESB, и у меня есть следующие требования для конкретной проблемы:-
Существует веб-служба, вызываемая с использованием URI тега формы, который принимает запрос как JSON и отвечает на вызов POST данными JSON. Мне нужно включить данные JSON запроса в качестве одного из полей в мой ответ JSON. Я ищу возможный способ обогатить мое сообщение. Я мог бы сделать это, написав логику преобразования в классе Java. Ноограничение заключается в том, что я не могу использовать отдельный класс Java для выполнения преобразования данных. Я должен сделать это через настройку внутри camelContext с помощью тегов. Пожалуйста, предложите.
2 ответа
Я думаю, вам нужно взглянуть на метод setBody. Пожалуйста, проверьте здесь.
...
<setBody>
<simple>
{
"message" : "${body}"
}
</simple>
</setBody>
...
Вы можете прочитать все тело Json как дерево
JsonNode body = mapper.readTree(input);
и после этого обогатите его своей конструкцией. Например, если у вас есть следующее тело json:
{"valueList": {
"key": "1",
"value": "2"
}
}
Вы можете обогатить его этим фрагментом кода:
ObjectMapper mapper = new ObjectMapper();
ObjectNode rootNode = mapper.createObjectNode();
ArrayNode headersList = mapper.createArrayNode();
rootNode.set("headersList", headersList);
rootNode.putPOJO("valueList", body.get("valueList"));