首页 > 解决方案 > 如何将数组值列表转换为 Dataweave 中的映射

问题描述

嗨,我有一个这种格式的有效载荷。尝试编写 dataweave 函数来转换此有效负载,但我无法满足确切的期望。

{
"OUT_ORDER_CONTENTS_TAB": [
    [
        776665544,
        100,
        "Limited C/O",
        "loanPurpose"
    ],
    [
        776665544,
         100,
        "THE PURPOSE OF PURCHASE ",
        "loanPurpose"
    ],
    [
        776665544,
         100,
        "contains blank space",
        "borrower/2/borrowerPhone"
    ]
]
}

预期的输出格式是

{
"/loanPurpose": ["Limited C/O","THE PURPOSE OF PURCHASE "],
"/borrower/2/borrowerPhone": ["contains blank space"]
}

标签: dataweavemule4

解决方案


它比仅将数组转换为映射要复杂一些,因为数组的元素内部是数组,您需要按一个索引(第 4 个元素)分组并从另一个(第 3 个元素)收集值。

可以使用 groupBy() 和 mapObject() 来完成:

%dw 2.0
output application/json
---
(payload.OUT_ORDER_CONTENTS_TAB 
    groupBy ((item, index) -> item[3] ) )
    mapObject ((value, key, index) -> ("/"++(key)):value map $[2])

推荐阅读