使用DWL 2.0进行转换

问题描述 投票:0回答:1

输入-

[
{
    "SBQQ__Language__c": "th",
    "SBQQ__APIName__c": "Description",
    "SBQQ__Text__c": null,
    "SBQQ__LongTextArea__c": "Packaging prepress - TH"
},
{
    "SBQQ__Language__c": "th",
    "SBQQ__APIName__c": "Name",
    "SBQQ__Text__c": "ArtPro - TH",
    "SBQQ__LongTextArea__c": null
},
{
    "SBQQ__Language__c": "es",
    "SBQQ__APIName__c": "Name",
    "SBQQ__Text__c": "ArtPro - ES",
    "SBQQ__LongTextArea__c": null
},
{
    "SBQQ__Language__c": "es",
    "SBQQ__APIName__c": "Description",
    "SBQQ__Text__c": null,
    "SBQQ__LongTextArea__c": "Packaging prepress - ES"
},
{
    "SBQQ__Language__c": "de",
    "SBQQ__APIName__c": "Name",
    "SBQQ__Text__c": "ArtPro - DE",
    "SBQQ__LongTextArea__c": null
},
{
    "SBQQ__Language__c": "de",
    "SBQQ__APIName__c": "Description",
    "SBQQ__Text__c": null,
    "SBQQ__LongTextArea__c": "Packaging prepress - DE"
}
]

enter image description here

必需的输出:

[
{   
    "locale": "th",
    "name": "ArtPro - TH",
    "description": "Packaging prepress - TH"
},
{
    "locale": "es",
    "name": "ArtPro - ES",
    "description": "Packaging prepress - ES"
},
{   
    "locale": "de",
    "name": "ArtPro - DE",
    "description": "Packaging prepress - DE"
}
]

enter image description here

注意:映射-

'locale'        : SBQQ__Language__c,
'name'          : SBQQ__Text__c,
'description'   : SBQQ__LongTextArea__c

我尝试使用groupBy,然后尝试合并,但未成功。

mule dataweave mulesoft
1个回答
0
投票

尝试一下:

%dw 2.0
output application/dw

---
payload groupBy $.SBQQ__Language__c
mapObject (
    (v,k,i) -> {
        (k): {
            locale: k,
            name: (v filter ($.SBQQ__APIName__c == "Name"))[0].SBQQ__Text__c,
            description: (v filter ($.SBQQ__APIName__c == "Description"))[0].SBQQ__LongTextArea__c
        }
    }

)
pluck $

我必须作一些假设,考虑到除了输入和输出之外没有太多解释,这对于尝试推断您想要的内容非常有用。如果这不是您要查找的内容,则可能会在您的问题中提供更多详细信息,我将对此进行修改。

希望对您有帮助。

编辑:我相信此解决方案将执行得更好:

%dw 2.0
output application/dw

---
payload groupBy $.SBQQ__Language__c
mapObject (
    (v,k,i) -> {
        (k): v reduce (e, acc={locale: k}) -> acc ++ do {
            var field = lower(e.SBQQ__APIName__c)
            ---
            (field): if (field == "name") e.SBQQ__Text__c else e.SBQQ__LongTextArea__c
        }
    } 

)
pluck $
© www.soinside.com 2019 - 2024. All rights reserved.