如何在Mule Dataweave中将数组中的数据映射到具有不同索引的另一个数组输出

如何在Mule Dataweave中将数组中的数据映射到具有不同索引的另一个数组输出,mule,dataweave,Mule,Dataweave,我有这样一个JSON: { "invoice-line": [ { "id": "01", "date": "2019-06-21", "sales-date": "2019-06-21", "line-num": "1", "item": "Mouse", "descrption": "This is line 1 item" }, { "id": "02",

我有这样一个JSON:

{
"invoice-line": [
    {
        "id": "01",
        "date": "2019-06-21",
        "sales-date": "2019-06-21",
        "line-num": "1",
        "item": "Mouse",
        "descrption": "This is line 1 item"
    },
    {
        "id": "02",
        "date": "2019-06-21",
        "sales-date": "2019-06-21",
        "line-num": "2",
        "item": "Keyboard",
        "descrption": "This is line 2 item"
    },
    {
        "id": "03",
        "date": "2019-06-21",
        "sales-date": "2019-06-21",
        "line-num": "3",
        "item": "Monitor",
        "descrption": "This is line 3 item"
    }
]
}
从这个输入JSON中,我们需要提取数据并映射到另一个输出JSON中,但逻辑是:
当line num=1时,则映射id、日期、销售日期、说明 然后rest或数组将映射id、项、描述
如下所示:

{
"row": [
    {
        "id": "01",
        "date": "2019-06-21",
        "sales-date": "2019-06-21",
        "line-num": "1",
        "item": "",
        "descrption": "This is line 1 item"
    },
    {
        "id": "02",
        "date": "",
        "sales-date": "",
        "line-num": "",
        "item": "Mouse",
        "descrption": "This is line 2 item"
    },
    {
        "id": "03",
        "date": "",
        "sales-date": "",
        "line-num": "",
        "item": "Monitor",
        "descrption": "This is line 3 item"
    }
]
}
也可以执行类似于将数组项(第一个索引)映射到不同输出数组的操作吗?例如:

{
"row": [
    {
        "id": "",
        "date": "2019-06-21",
        "sales-date": "2019-06-21",
        "line-num": "1",
        "item": "",
        "descrption": ""
    },
    {
        "id": "01",
        "date": "",
        "sales-date": "",
        "line-num": "",
        "item": "Keyboard",
        "descrption": "This is line 1 item"
    },
    {
        "id": "02",
        "date": "",
        "sales-date": "",
        "line-num": "",
        "item": "Mouse",
        "descrption": "This is line 2 item"
    },
    {
        "id": "03",
        "date": "",
        "sales-date": "",
        "line-num": "",
        "item": "Monitor",
        "descrption": "This is line 3 item"
    }
]
}

希望这就是你一直在寻找的:

%dw 1.0
%output application/json
---
row: 
    (payload.invoice-line filter ($.line-num == '1') map {
            id: "",
            date: $.date,
            sales-date: $.sales-date,
            line-num: $.line-num,
            item: "",
            descrption: ""
        })
    ++
    (payload.invoice-line map {
            id: $.id,
            date: "",
            sales-date: "",
            line-num: "",
            item: $.item,
            descrption: $.descrption
    })
产生:

{
    "row": [
        {
            "id": "",
            "date": "2019-06-21",
            "sales-date": "2019-06-21",
            "line-num": "1",
            "item": "",
            "descrption": ""
        },
        {
            "id": "01",
            "date": "",
            "sales-date": "",
            "line-num": "",
            "item": "Mouse",
            "descrption": "This is line 1 item"
        },
        {
            "id": "02",
            "date": "",
            "sales-date": "",
            "line-num": "",
            "item": "Keyboard",
            "descrption": "This is line 2 item"
        },
        {
            "id": "03",
            "date": "",
            "sales-date": "",
            "line-num": "",
            "item": "Monitor",
            "descrption": "This is line 3 item"
        }
    ]
}

非常感谢,但是是的,这不是我想要的,因为输出字段(post target)在我这边是不可控制的,所以我不能在该行上添加标题或行。明天早上我可以为您提供预期的输出谢谢,这对我帮助很大…仍在寻找将两种不同的逻辑应用到一个数组上的方法…希望新的编辑更好。如果是,请将答案标记为正确。谢谢这个看起来很棒。谢谢你的帮助!