繁体   English   中英

WSO2丰富阵列

[英]WSO2 Enrich array

我正在使用WSO2 ESB(4.8.1),并且需要转换此有效负载:

[
   {
     "id":"1",
     "budget":"a"
   },
   {
     "id":"2",
     "bidget:"b"
   }
]

在这种情况下,使用富媒体(如果可能):

[
   {
     "id":"1",
     "budget":"a",
     "result":"1-a"
   },
   {
     "id":"2",
     "bidget:"b",
     "result":"2-b"
   }
]

有什么建议吗?

提前致谢

看一下这个样本:

输入文件:

<?xml version="1.0" encoding="UTF-8" ?>
<employees>
    <root>
        <id>1</id>
        <budget>a</budget>
    </root>
    <root>
        <id>2</id>
        <budget>b</budget>
    </root>
    <root>
        <id>3</id>
        <budget>c</budget>
    </root>
</employees>

我的xslt:

<?xml version='1.0' ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <employees>
            <xsl:for-each select="employees/root">
                <root>
                    <id>
                        <xsl:value-of select="id"/>
                    </id>
                    <budget>
                        <xsl:value-of select="budget"/>
                    </budget>
                    <result>
                        <xsl:value-of select="concat(id,'-',budget)"/>
                    </result>
                </root>
            </xsl:for-each>
        </employees>
    </xsl:template>
</xsl:stylesheet>

输出文件:

<?xml version="1.0" encoding="UTF-8" ?>
<employees>
    <root>
        <id>1</id>
        <budget>a</budget>
        <result>1-a</result>
    </root>
    <root>
        <id>2</id>
        <budget>b</budget>
        <result>2-b</result>
    </root>
    <root>
        <id>3</id>
        <budget>c</budget>
        <result>3-c</result>
    </root>
</employees>

因此,您可以在WSO2 ESB( https://docs.wso2.com/display/ESB490/XSLT+Mediator )和此配置或类似配置中使用xslt中介程序,并使用您的定义。 问候。

我认为,当您不知道数组的长度时,就不会使用rich或payloadFactory对其进行转换。 我在WSO2 ESB文档中发现了相同的问题。 此JS函数可转换对象数组。

function transform(mc) {
payload = mc.getPayloadJSON();
results = payload.results;
var response = new Array();
for (i = 0; i < results.length; ++i) {
    location_object = results[i];
    l = new Object();
    l.name = location_object.name;
    l.tags = location_object.types;
    l.id = "ID:" + (location_object.id);
    response[i] = l;
}
mc.setPayloadJSON(response);
}

有关更多信息,请参见此链接中的 Scipte介体。

暂无
暂无

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

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