【问题标题】:How to enrich data by inserting json in other json in ESB如何通过在 ESB 中的其他 json 中插入 json 来丰富数据
【发布时间】:2017-10-02 22:46:29
【问题描述】:

我在我的 ESB 项目中使用 Camel API 进行路由,并且对特定问题有以下要求:-

有一个使用表单标签 URI 调用的 Web 服务,它将请求作为 JSON 接收,并使用 JSON 数据响应 POST 调用。我需要将请求 JSON 数据作为响应 JSON 中的字段之一。我正在寻找一种可能的方式来丰富我的信息。我可以通过在 java 类中编写转换逻辑来做到这一点。 但 约束 是我不能使用单独的 Java 类进行数据转换。我必须通过使用标签在 camelContext 中进行配置来做到这一点。请提出建议。

【问题讨论】:

  • 使用标签是什么意思,是不是不能写Java代码,只能做XML配置?
  • @Claus Ibsen 是的,最好只使用 XML 配置来完成,但是如果我们必须使用 Java 类来编写丰富逻辑并且没有其他选项可以。但是,如果存在任何 XML 配置,你能告诉哪个是基于 XML 的更好还是基于 Java 的更好?

标签: json routes apache-camel esb jboss-esb


【解决方案1】:

您可以将整个 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"));

【讨论】:

    【解决方案2】:

    我认为你需要看看 setBody 方法。请查看here.

    ...
    <setBody>
    <simple>
    {
    "message" : "${body}"
    }
    </simple>
    </setBody>
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-12
      相关资源
      最近更新 更多