如何使用 Dataweave 从对象数组中获取特定键的所有值

问题描述

使用 dataweave,我想从对象数组中获取所有“ProductCode”值。输出还应获取不同的值。

输入:

    [
    {
        "Header": {
            "Comments": null,"InvoiceNo": "4363627","vendor": "vendor1","Description": "Invoice1"
        },"Line": [
            {
                "Billing": null,"ComboNum": "1","ProductCode": "D4500"
            }
        ]
    },{
        "Header": {
            "Comments": "GPoint","InvoiceNo": "4356750","vendor": "vendor2","Description": "ALL"
        },"ProductCode": "S4500"
            },{
                "Billing": null,"ComboNum": "2","ProductCode": "D4500"
            },"ComboNum": "3","ProductCode": "D4501"
            },"ComboNum": "4","ProductCode": "B4500"
            }
        ]
    }
]

预期输出

ProductCode : ('D4500','S4500','D4501','B4500')

提前致谢

解决方法

试试这个

%dw 2.0
output application/json
---
'ProductCode': payload.Line..ProductCode distinctBy $
,

你可以试试这个:

(flatten(payload.Line)).ProductCode distinctBy (a) -> a

首先,它收集所有行。然后,它提取产品代码,最后,它应用一个不同的代码来获得唯一代码。