为m子3中的每个循环再向对象数组中添加一个元素

问题描述

我的输入内容如下

[{Name=ABC,ID=123},{Name=XYZ,ID=345}]

我将在for-each循环中遍历此集合,并向每个对象添加一个元素Age。 我的预期输出将是

[{Name=ABC,ID=123,Age=23},ID=345,Age=24}]

任何帮助将不胜感激。预先感谢。

解决方法

HTH ..

%dw 2.0
output application/json
var inp = [
     {
         "Name":"ABC","ID":"123"
     },{ 
         "Name":"XYZ","ID":"345"
     }
    ]
---
inp map {
  ($),age:  (23 + ($$)) // or your logic to derive age

}
,

DW无法实现,因为修改了for-each内部的有效负载。所以我尝试使用Expression组件。下面是我的配置XML。

<flow name="add-one-more-element-to-the-original-payload">
    <poll doc:name="Poll">
        <fixed-frequency-scheduler frequency="30" timeUnit="SECONDS"/>
        <logger message="Pooling Started" level="INFO" doc:name="Log"/>
    </poll>
    <dw:transform-message doc:name="Transform Payload">
        <dw:set-payload><![CDATA[%dw 1.0
%output application/java
%var collection = [{"Name":"ABC","ID":123},{"Name":"XYZ","ID":345}]
---
collection]]></dw:set-payload>
    </dw:transform-message>
    <set-variable variableName="outputList" value="#[new java.util.ArrayList()]" 
doc:name="Set Variable"/>
            <foreach doc:name="For Each" collection="#[payload]">
        <dw:transform-message doc:name="CurrentPayload">
            <dw:set-variable variableName="currentPayload"><![CDATA[%dw 1.0
%output application/java
---
payload]]></dw:set-variable>
        </dw:transform-message>
        <flow-ref name="get-age-subflow" doc:name="Get Age"/>
        <expression-component doc:name="Expression"><! 
[CDATA[flowVars.currentPayload.Age=payload.Age;]]></expression-component>
        <expression-transformer expression="# 
[flowVars.outputList.add(flowVars.currentPayload)]" doc:name="Expression"/>
    </foreach>
    <logger message="#[flowVars.outputList]" level="INFO" doc:name="Logger"/>
</flow>
<sub-flow name="get-age-subflow">
    <dw:transform-message doc:name="Transform Age">
        <dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
{
Age:24
}]]></dw:set-payload>
    </dw:transform-message>
</sub-flow>

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...