Dataweave 2.0 reduce函数减少json Mule的数组

Dataweave 2.0 reduce函数减少json Mule的数组,mule,dataweave,mule4,Mule,Dataweave,Mule4,我的输入Json如下所示:- [{ "eId": "123", "eType": "NZ", "value": [{ "tId": "444" }, { "tId": "555"

我的输入Json如下所示:-

[{
        "eId": "123",
        "eType": "NZ",
        "value": [{
                "tId": "444"
            }, {
                "tId": "555"
            }
        ]
    }, {
        "eId": "456",
        "eType": "AU",
        "value": [{
                "tId": "666"
            }
        ]
    }
]
预期输出Json如下所示:

 [{
        "eId": "123",
        "eType": "NZ",
        "tId": "444"
    }, {
        "eId": "123",
        "eType": "NZ",
        "tId": "555"
    }, {
        "eId": "456",
        "eType": "AU",
        "tId": "666"
    }
]
我试着使用下面的reduce函数进行转换。我没有得到预期的回应

%dw 2.0
output application/json
---
payload reduce ((val, acc = []) -> 
acc + {
    "id" : val.eId, "type": val.eType, "Tid": val.value map $.tId
})
有人能告诉我哪里做错了吗?试试这个

%dw 2.0
output application/json
var inp = payload
---
payload[0].value map {
    eId: inp[0].eId,
    Tid: $.tId
}

我将做出一个有根据的猜测,因为示例预期输出不完整,预期输出应该如下所示:

[
  {
    "eId": "123",
    "type": "Co",
    "tId": "444"
  },
  {
    "eId": "123",
    "type": "Co",
    "tId": "555"
  }
]
脚本:

%dw 2.0
output application/json
fun mapItem(i) = i.value map { eId: i.eId, "type": i.eType, tId: $.tId }
---
payload flatMap mapItem($)

如果需要,请随意编辑问题以添加更多详细信息。

您可以尝试使用以下dataweave表达式:

%dw 2.0
output application/json
---
flatten(payload map (it1, ix1) -> 
    it1.value map (it2, ix2) -> {
        eId: it1.eId,
        eType: it1.eType,
        tId: it2.tId
    })
更新的解决方案

%dw 2.0
output application/json

---
payload flatMap ((item, index) ->  { 
     a: item.value map {
         eId:item.eId,
         eType: item.eType,
         tId: $.tId
     }}.a)

它并不适用于所有请求。如果给定阵列中有多个对象,则该解决方案完全基于ask。。以下是更新后的示例。示例输出没有用处。您需要给出一个示例,说明主数组中多个元素应发生的情况,并向示例输出中添加类型。此解决方案效果良好。这是将数组数组创建为响应。(不生成预期响应)您是对的。对不起。我刚刚更新了DW表达式来解决它。