如何在 mulesoft dataweave 中创建增量计数器

问题描述 投票:0回答:1

我们有多级数组,因此我们正在使用多个映射函数的转换。在这种情况下如何分配具有增量值的字段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,因此请让我知道我们可以使用什么来获取增量值。

dictionary mule auto-increment dataweave
1个回答
0
投票

您的输入不是正确的 json。它有格式错误。

尝试以下。

%dw 2.0
output application/json
---
flatten(payload map (item, index) ->
    item.items map (subItem, subIndex) -> {
        "ID": index * sizeOf(item.items) + subIndex + 1,
        "PNR": item.productNo,
        "Color": subItem.color
    }
)

在此代码中,index * sizeOf(item.items) 计算每个外部项目的基本索引,并且 subIndex + 1 增加每个内部项目的索引。这样,您就可以获得“ID”字段的唯一增量值。

通过此修改,您应该获得示例中提到的预期输出。

© www.soinside.com 2019 - 2024. All rights reserved.