基于ProductId在Jolt中新增自增序号列SubProductIDSEQ
Jolt转换规则:按ProductId生成自增SubProductIDSEQ
以下是满足需求的Jolt转换规则,核心逻辑是先按ProductId聚合同组子产品,为每组内元素生成从1开始的递增序号,再还原为原始数组结构:
[ // 1. 按ProductId分组,将同ID的子产品聚合到对应键的数组中 { "operation": "shift", "spec": { "*": { "@": "@(1,ProductId).[]" } } }, // 2. 为每组内的子产品添加自增序号(索引从0开始,+1得到1起始的序列) { "operation": "shift", "spec": { "*": { "*": { "@": "[#2].&", "#=toString(&1 + 1)": "[#2].&.SubProductIDSEQ" } } } }, // 3. 展开分组结构,恢复为一维数组格式 { "operation": "shift", "spec": { "*": { "*": "[]" } } } ]
规则细节:
- 分组:第一个
shift操作将每个元素存入以自身ProductId为键的数组,形成{ProductId: [子产品1, 子产品2...]}的临时结构。 - 序号生成:第二个
shift中,&1代表当前元素在组内的索引(从0开始),通过#=toString(&1 + 1)生成从1起始的字符串类型序号。 - 展开还原:第三个
shift将所有分组内的元素提取出来,重新组合为一维数组,与原始输入的数组结构一致。
将上述规则应用到你提供的输入JSON,即可得到符合要求的输出结果。
内容的提问来源于stack exchange,提问作者Thiyagaraj Narayanan
相关产品推荐
相关产品推荐

