繁体   English   中英

我如何遍历wso2 esb代理服务接收的json负载

[英]how can I loop over json payload received by wso2 esb proxy-service

我正在使用wso2 esb构建代理服务。 它将REST请求发送到Google Books API并接收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]

这里的authors [i]非常动态,因为不同的书籍有不同的作者数量。

如何将该有效负载转换为XML,然后将其作为XML发送给客户端

<items>
    <titie></title>
    <authors>
        <author></author>
        <author></author>
        <author></author>
        .
        .
        .
    </authors>
</items>

在结果上,您可以使用有效负载介体从JSON构造xml。

https://docs.wso2.com/display/ESB500/PayloadFactory+Mediator

从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>

现在,您将看到类似以下的内容。

<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相互转换https://docs.wso2.com/display/EI620/JSON+Support

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM