如何循环wso2 esb代理服务接收的json负载
我正在使用wso2 esb构建代理服务。它向GoogleBooksAPI发送REST请求并接收json。在这个Json中,有一个动态数组,我必须将其解析为XML。我似乎不知道该怎么做 接收到的json负载如何循环wso2 esb代理服务接收的json负载,json,wso2,wso2esb,mediator,proxy-server,Json,Wso2,Wso2esb,Mediator,Proxy Server,我正在使用wso2 esb构建代理服务。它向GoogleBooksAPI发送REST请求并接收json。在这个Json中,有一个动态数组,我必须将其解析为XML。我似乎不知道该怎么做 接收到的json负载 "items": [ { "volumeInfo": { "title": "Web Services", "authors": [ "Gustavo Alonso", "Fabio Casati", "Harumi Kuno",
"items": [
{
"volumeInfo": {
"title": "Web Services",
"authors": [
"Gustavo Alonso",
"Fabio Casati",
"Harumi Kuno",
"Vijay Machiraju"
],
"publisher": "Springer Science & Business Media",
"publishedDate": "2003-09-04"
]
}
如果您浏览一下上面收到的Json,它类似于以下内容:items[0].authors[i]
这里的作者[我]是非常动态的,因为不同的书有不同的作者数量
如何将此有效负载转换为XML,然后作为XML发送到客户端
<items>
<titie></title>
<authors>
<author></author>
<author></author>
<author></author>
.
.
.
</authors>
</items>
.
.
.
在outsequence中,您可以使用负载中介从JSON构建xml
从JSON转换为XML时,我几乎总是使用这种方式 首先将messageType设置为xml,您也可以设置ContentType,但我不能100%确定是否需要它
<property name="messageType" scope="axis2" value="application/xml"/>
<property name="ContentType" scope="axis2" value="application/xml"/>
接下来,使用包含根元素的有效负载工厂,将媒体类型设置为XML
<payloadFactory media-type="xml">
<format>
<SomeRequest xmlns="yourXMLNamespace">
$1
</SomeRequest>
</format>
<args>
<arg evaluator="json" expression="."/>
</args>
</payloadFactory>
$1
要将json转换为xml,只需将其放在outsequence@JorgeInfanteOsorio这就是我目前正在做的。如果我想改变结果呢?在这种情况下,您可以使用XSLT中介将json转换为xml。
<SomeRequest>
<items>
<volumeInfo></volumeInfo>
<title>Web Services</title>
<authors>Gustavo Alonso</authors>
<authors>Fabio Casati</authors>
<authors>Harumi Kuno</authors>
<authors>Vijay Machiraju</authors>
<publisher>Springer Science & Business Media</publisher>
<publishedDate>2003-09-04</publishedDate>
</items>
<items>
...
</items>
</SomeRequest>
<xslt key="{name of your xslt transform file}"/>