Как обогатить данные, вставив 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"));
Другие вопросы по тегам