在WSO2中增加有效载荷

在WSO2中增加有效载荷,wso2,wso2esb,Wso2,Wso2esb,我有一个如下结构的JSON数组 {"paymentItems": [ { "amount": "180000", "code": "28" }, { "amount": "396000", "code": "06" }, { "amount": "1460000", "code": "01" } ] } 我试图用一个额外的JSON值来充实数组列表中的

我有一个如下结构的JSON数组

 {"paymentItems": [
    {
        "amount": "180000",
        "code": "28"
    },
    {
        "amount": "396000",
        "code": "06"
    },
    {
        "amount": "1460000",
        "code": "01"
    }
]
}
我试图用一个额外的JSON值来充实数组列表中的每个项目

<foreach expression="//paymentItems" id="1">
            <sequence>
                <property expression="//paymentItems/amount" name="amount" scope="default" type="STRING"/>
                <property expression="//paymentItems" name="body" scope="default" type="STRING"/>
                <log>
                    <property expression="$ctx:amount" name="INIDIVIDUAL_AMOUNT"/>
                </log>
                <script language="js"><![CDATA[var amount = mc.getProperty('amount'); var naira = amount/100; mc.setProperty("nairaValue", naira);]]></script>
                <log>
                    <property expression="get-property('nairaValue')" name="NAIRA_VAL"/>
                </log>
                <property expression="get-property('nairaValue')" name="naira" scope="default" type="STRING"/>
                <enrich>
                    <source type="custom" xpath="$ctx:nairaValue"/>
                    <target action="child" type="body"/>
                </enrich>
            </sequence>
 </foreach>


正如您所看到的,我处理foreach中的值,然后使用结果并尝试添加到数组项,但它不会抛出错误,也不会添加值。

foreach mediator执行以下操作

  • 首先复制原始邮件
  • 从原始消息中获取迭代元素(使用XPath)
  • 通过向克隆的信封添加迭代元素来创建新的消息上下文
  • 执行该新消息上下文序列中给定的中介步骤
  • 因为对于每个迭代,我们都在克隆一个新的消息上下文(比如context2),而原始消息上下文(比如context1)是一个单独的上下文,所以我们不能从context2丰富到context1

    这就是你所经历的行为的原因


    作为补救措施,您可以通过脚本中介程序自己进行迭代,并根据需要修改消息。

    也许您可以详细说明如何使其工作?