我正在创建一个简单的OpenESB应用程序。 在左边我有一个休息的入境合作伙伴链接,在右边我正在呼叫一个休息的出站合作伙伴链接。 我正在尝试将json传递给服务,但openESB会自动解析它并将其转换为XML。
所以问题是如何阻止打开esb将json字符串转换为xml,因为服务不接受xml输入。
答案 0 :(得分:1)
OpenESB只能处理XML。
对于consume-types=[ "application/json" ]
,JSON输入会自动转换为XML以供进一步处理,并在需要时调用任何外部合作伙伴链接。
对于produce-types=[ "application/json" ]
,OpenESB将XML数据转换为JSON。
要实现相同的目标,您的JSON必须采用转换为XML格式时生成有效XML的格式。
例如,
{"name":äbc"}
看起来像
转换为XML时<name>abc</name>
。
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>
这适用于您的情况。 :)
答案 1 :(得分:0)
您的开放式ESB应用程序似乎配置为xml格式,因此如果您调用json服务,它将转换为xml。此链接可能可以帮助您在ESB https://docs.wso2.com/display/ESB403/ESB+and+JSON中实现JSON。
答案 2 :(得分:0)
如果你在字符串中有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源设置它的值。
答案 3 :(得分:0)
您可以创建自己的组件,这是将json处理为xml,将xml处理为json的最简单方法。如果需要更多详细信息,请告诉我。