我使用wso2 esb构建代理服务。它向Google Books API发送REST请求并接收json。在这个Json中,有一个动态数组,我必须解析为XML。我似乎无法弄清楚我该怎么做。
收到json有效载荷
"items": [
{
"volumeInfo": {
"title": "Web Services",
"authors": [
"Gustavo Alonso",
"Fabio Casati",
"Harumi Kuno",
"Vijay Machiraju"
],
"publisher": "Springer Science & Business Media",
"publishedDate": "2003-09-04"
]
}
如果你浏览上面收到的Json,它就像这样的东西[0] .authors [i]
这里作者[i]非常有活力,因为不同的书籍有不同的作者。
如何将此有效内容转换为XML,然后以XML格式发送到客户端
<items>
<titie></title>
<authors>
<author></author>
<author></author>
<author></author>
.
.
.
</authors>
</items>
答案 0 :(得分:0)
在结果中,您可以使用有效负载介体从JSON构造xml。
https://docs.wso2.com/display/ESB500/PayloadFactory+Mediator
答案 1 :(得分:0)
从JSON转换为XML时,我几乎总是这样使用。
首先将messageType设置为xml,您也可以设置ContentType但我不是100%确定是否需要
<property name="messageType" scope="axis2" value="application/xml"/>
<property name="ContentType" scope="axis2" value="application/xml"/>
接下来使用带有封闭根元素的payload工厂,将媒体类型设置为XML
<payloadFactory media-type="xml">
<format>
<SomeRequest xmlns="yourXMLNamespace">
$1
</SomeRequest>
</format>
<args>
<arg evaluator="json" expression="."/>
</args>
</payloadFactory>
现在你会看到这样的东西。
<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>
看看它如何解开JSON数组,它使用数组名创建了多个元素。要从这里获得响应格式,您希望最简单的方法是使用xslt转换。
<xslt key="{name of your xslt transform file}"/>
然后你可以回复给客户。
可能值得查看wso2文档中的JSON支持页面。它介绍了如何将JSON转换为XML和从XML转换 https://docs.wso2.com/display/EI620/JSON+Support