繁体   English   中英

在WSO2中充实有效载荷

[英]Enrich Payload in WSO2

我有以下结构的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调解员执行以下操作

  1. 首先复制原始邮件
  2. 从原始消息中获取一个迭代元素(使用XPath)
  3. 通过将迭代元素添加到克隆的信封中来创建新的消息上下文
  4. 针对该新消息上下文执行顺序中给出的中介步骤

由于对于每次迭代,我们都将克隆一个新的消息上下文(例如context2),而原始消息上下文(例如context1)是一个单独的消息,因此我们无法从context2扩展到context1。

这就是您所遇到的行为的原因。

作为补救措施,您可以从脚本介体本身进行迭代,并根据需要更改消息。

暂无
暂无

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

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