如何在 Open ESB 中传递 JSON

How to pass JSON in Open ESB

我正在创建一个简单的 OpenESB 应用程序。 在左边,我有一个休息呼入伙伴 link,在右边,我正在呼叫一个休息呼出伙伴 link。 我试图将 json 传递给服务,但 openESB 自动解析它并将其转换为 XML.

所以问题是如何阻止 open esb 将 json 字符串转换为 xml,因为该服务不接受 xml 输入。

您的开放式 ESB 应用程序似乎配置为 xml 格式,因此如果您调用 json 服务,它会转换为 xml。此 link 或许能够帮助您在 ESB https://docs.wso2.com/display/ESB403/ESB+and+JSON.

中实施 JSON

OpenESB 只能处理 XML。

对于 consume-types=[ "application/json" ] JSON 输入会自动转换为 XML 以便进一步处理并在需要时调用任何外部合作伙伴链接。

对于produce-types=[ "application/json" ] XML数据被OpenESB转换成JSON。

要达到同样的效果,您的 JSON 必须采用一种格式,当转换为 XML 时,生成有效的 XML。 例如, {"name":äbc"} 看起来像 <name>abc</name> 转换为 XML。

JSON 输入喜欢,

{
    "name1":äbc",
    "name2":äbc"
}

看起来像

<name1>abc</name1>
<name2>abc</name2>

现在 name1 和 name2 XML 元素没有根元素,因此 OpenESB 无法处理它。

如果您将 JSON 输入为

{
     "someRootElement":{
         "name1":äbc",
         "name2":äbc"
      }
}

,转换后的 XML 就像,

<someRootElement>
   <name1>abc</name1>
   <name2>abc</name2>
</someRootElement>

这应该适用于您的情况。 :)

如果字符串中有 JSON,您可以通过将其值设置到变量的以下 属性 中来传递它。

        <copy>
             <from>'{"name" : "abc", "age" : "23"}'</from>
            <to variable="RestOutboundIn" part = "part1"/>
        </copy>
        <copy>
             <from variable="RestOutboundIn" part = "part1"/>
            <to variable="RestOutboundIn" sxnmp:nmProperty="org.glassfish.openesb.rest.entity"/>
        </copy>

注意:此 属性 在 OpenESB bpel 编辑器中不可用。您必须通过 XML 来源设置它的值。

您可以创建自己的组件,这将是处理 json 到 xml、xml 到 json 的最简单方法。如果需要更多详细信息,请告诉我。