这是我的Json输入
[
{
"id":"001",
"name":"john",
"gender": "M"
},
{
"id":"002",
"name":"Mule",
"gender": "F"
},
{
"id":"003",
"name":"Sara",
"gender": "F"
},
{
"id":"004",
"name":"Mati",
"gender": "F"
}
]
我需要生成此输出
gender:F**|**Mati*004**|**Sara*003**|**
gender:M**|**john*001**|**Mule*002**|**
答案 0 :(得分:1)
我不得不说输出看起来不是标准的CSV。话虽如此,有可能在DataWeave中实现所需的输出。我假设您的输出不正确,因为“ M子”记录被分组为“男性”。
我需要几个步骤来达到目的。首先使用groupBy()按性别对记录进行分组。然后使用pluck()创建一个具有groupBy()输出的数组,以便能够对其进行映射。然后使用reduce为每个组创建单个行字符串。也许有一种更简单的方法来获得相同的结果,但是预期的输出并不是CSV格式的自然匹配,因此所有操作都必须手动完成。如果可能的话,我建议使用更简单的输出格式。
这是生成的脚本:
%dw 2.0
output application/csv header=false
---
(payload groupBy (item) -> item.gender )
pluck ((value, key, index) -> {
k: key,
v: value
}
) map ((it, in) -> {
record: "gender:" ++ it.k ++ (it.v reduce ((person, acc="") -> acc ++ "**|**" ++ person.name ++ "*" ++ person.id) ++ "**|**")
}
)
哪个提供以下输出供您输入:
gender:M**|**john*001**|**
gender:F**|**Mule*002**|**Sara*003**|**Mati*004**|**