dataweave - 如何在dataweave中转换子项
问题描述
我有以下输入
{
"error1": [
{
"store": "1201",
"DocumentNumber": "FF15974433790786634518"
},
{
"store": "1201",
"DocumentNumber": "FF15974433790786634519"
},
{
"store": "1201",
"DocumentNumber": "FF15974433790786634520"
},
{
"store": "1202",
"DocumentNumber": "FF15974433790786634520"
}
],
"error2": [
{
"store": "1201",
"DocumentNumber": "FF15974433790786634518"
}],
error3:[]
}
我想导出以下结果
{
"error1": [{
"store": "1201",
"DocumentNumber": ["FF15974433790786634518", "FF15974433790786634519", "FF15974433790786634520"]
},
{
"store": "1202",
"DocumentNumber": ["FF15974433790786634520"]
}
],
"error2": [{
"store": "1201",
"DocumentNumber": ["FF15974433790786634518"]
}]
}
解决方案
试试这个:
输入:
{
"error1": [
{
"store": "1201",
"DocumentNumber": "FF15974433790786634518"
},
{
"store": "1201",
"DocumentNumber": "FF15974433790786634519"
},
{
"store": "1201",
"DocumentNumber": "FF15974433790786634520"
},
{
"store": "1202",
"DocumentNumber": "FF15974433790786634520"
}
],
"error2": [
{
"store": "1201",
"DocumentNumber": "FF15974433790786634518"
}],
"error3":[]
}
脚本:
%dw 2.0
output application/json
---
payload filterObject ($ !=[]) mapObject {
($$) : $ groupBy $.store mapObject {
temp:{
store: $.store[0],
DocumentNumber: $.DocumentNumber
}} pluck($)
}
输出:
{
"error1": [
{
"store": "1201",
"DocumentNumber": [
"FF15974433790786634518",
"FF15974433790786634519",
"FF15974433790786634520"
]
},
{
"store": "1202",
"DocumentNumber": [
"FF15974433790786634520"
]
}
],
"error2": [
{
"store": "1201",
"DocumentNumber": [
"FF15974433790786634518"
]
}
]
}
推荐阅读
- javascript - DOMException:无法在“文档”上执行“querySelectorAll”:“.u28suggest li:first a”不是有效的选择器
- sql - 在存储过程中传递 \ 输入参数
- python - 测试多列的训练数据框
- gentics-mesh - Gentics Mesh 内容节点功能
- ios - SwiftUI 条码不显示
- java - 如何使用 docker-compose.yaml 在气流容器中安装 java
- elasticsearch - 按字段对结果进行分组并对其进行排序
- javascript - Vue中的组件结构
- docker - 使用 Docker Image 和 Docker Compose 将 Cordapp 容器化
- bash - 使用 awk 或 sed 进行文本处理