如何在数组中映射数组并实现以下输出?

How to map an array within an array and achieve the following output?

在给定的输入中,

{
    "editable": true,
    "sections": [
        {
            "title": "Identification",
            "calingaKey": "",
            "content": [
                [{
                    "name": "Classification",
                    "text": "Product",
                    "url": "",
                    "info": ""
                },
                {
                    "name": "Product Number",
                    "text": "####1234",
                    "url": "",
                    "info": ""
                }]
            ]
        },
        {
            "title": "Position and Contact",
            "calingaKey": "",
            "content": [
                [{
                    "name": "Manufacturer",
                    "text": "Value of Manufacturer",
                    "url": "",
                    "info": ""
                },
                {
                    "name": "Hardware Version",
                    "text": "####1234",
                    "url": "",
                    "info": ""
                }]
            ]
        }
    ]
}

“内容”是 objects 数组的数组。基本上,“名称”字段必须替换为存储在“calinga”变量中相应键中的值。

我可以为“标题”字段这样做,但每个“名称”字段也应替换为它在变量中的名称。

%dw 2.0
output application/json
var calinga = {
    "Identification": "Identifikation",
    "Position and Contact": "Positions und Contacts",
    "Classification": "Classifikation",
    "Product Number": "Produkt Number",
    "Manufacturer": "Manufakturer",
    "Hardware Version": "Hware Vsion"
}
---
{
"editable": payload.editable,
"sections": payload.sections map(item01, index01)->{
    "title": calinga[item01.title],
    "content": item01.content map(item02)->(item02)
}
}

如何实现以下输出?

{
    "editable": true,
    "sections": [
        {
            "title": "Identifikation",
            "calingaKey": "",
            "content": [
                [{
                    "name": "Classifikation",
                    "text": "Product",
                    "url": "",
                    "info": ""
                },
                {
                    "name": "Produkt Number",
                    "text": "####1234",
                    "url": "",
                    "info": ""
                }]
            ]
        },
        {
            "title": "Positions und Contacts",
            "calingaKey": "",
            "content": [
                [{
                    "name": "Manufakturer",
                    "text": "Value of Manufacturer",
                    "url": "",
                    "info": ""
                },
                {
                    "name": "Hware Vsion",
                    "text": "####1234",
                    "url": "",
                    "info": ""
                }]
            ]
        }
    ]
}

一旦从最后一个嵌套数组下降到对象中,就可以使用 mapObject() 了。然后诀窍是使用 calinga 的值,但如果因为键不存在而为空,则使用原始值作为默认值:item03 mapObject {($$):calinga[$] default $}.

示例:

%dw 2.0
output application/json
var calinga = {
    "Identification": "Identifikation",
    "Position and Contact": "Positions und Contacts",
    "Classification": "Classifikation",
    "Product Number": "Produkt Number",
    "Manufacturer": "Manufakturer",
    "Hardware Version": "Hware Vsion"
}
---
{
"editable": payload.editable,
"sections": payload.sections map(item01, index01)->{
    "title": calinga[item01.title],
    "content": item01.content map(item02)->(item02 map(item03)-> item03 mapObject {($$):calinga[$] default $})
    }
}