【问题标题】:How to map data in an array to another array output with different index in Mule Dataweave如何将数组中的数据映射到 Mule Dataweave 中具有不同索引的另一个数组输出
【发布时间】:2019-06-24 21:17:03
【问题描述】:

我有一个这样的 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、日期、销售日期、描述 然后休息或数组将映射 id, item, descrption
如下所示:

{
"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"
    }
]
}

【问题讨论】:

    标签: mule dataweave


    【解决方案1】:

    希望这是您要找的:

    %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"
            }
        ]
    }
    

    【讨论】:

    • 非常感谢,但是是的,这不是我想要的,因为输出字段(发布目标)无法从我这边控制,所以我无法在该行数组上添加标题或行
    • 不用担心。明天早上我可以为您提供预期的输出
    • 谢谢,这对我帮助很大...仍在寻找将两种不同逻辑应用于一个数组的方法...
    • 希望新版本更好。如果是,请将答案标记为正确。谢谢!
    • 这看起来很棒。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2021-10-27
    • 2021-01-29
    • 2019-06-18
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    相关资源
    最近更新 更多