我们有多级数组,因此我们使用多个映射函数的转换。在这种情况下如何为字段 ID 分配增量值。
输入:
[
{
"productNo": "00011111",
"items": [
{
"color": "000000000006000060",
},
{
"color": "000000000006000061",
}
]
},
{
"productNo": "00022222",
"items": [
{
"color": "000000000006000060"
},
{
"color": "000000000006000061"
}
]
}
]
我为此尝试过的 Dataweave 代码:
%dw 2.0
output application/json
---
flatten(payload map (item, index) -> item.items map (subItem, subIndex) -> {
"ID": subIndex,
"PNR": item.productNo,
"Color": subItem.color
})
预期输出:
[
{
"ID": 1,
"PNR": 00011111,
"Color": "000000000006000060"
},
{
"ID": 2,
"PNR": 00011111,
"Color": "000000000006000061"
},
{
"ID": 3,
"PNR": 00022222,
"Color": "000000000006000060"
},
{
"ID": 4,
"PNR": 00022222,
"Color": "000000000006000061"
}
]
根据 dataweave,上面的 subIndex 将在下一次迭代中重置为 0,因此请让我知道我们可以使用什么来获取增量值。
您的输入不是正确的 json。它有一个格式错误。
尝试下面。
在此代码中,index * sizeOf(item.items) 计算每个外部项目的基本索引,subIndex + 1 增加每个内部项目的索引。这样,您就可以获得“ID”字段的唯一增量值。
通过此修改,您应该获得示例中提到的预期输出。
您可以在转换之前将结构转换为平面结构,然后插入索引。例子:
输出: