You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求Apache NiFi JOLT处理器的数组展开转换Spec(重复非数组值)

Apache NiFi JOLT 处理器转换规则实现

转换需求

编写JOLT转换规则,实现以下JSON转换逻辑:

  • 输入为包含若干子数组的JSON数组,其中部分子数组长度相同(本例为3)
  • 将输入展开为与该相同长度一致的多条记录(本例为3条)
  • 长度为1的子数组,其值在每条记录中重复保留
  • 所有数据的text标签格式在转换后保持与输入一致

输入JSON

[
  [
    {
      "text": "AAA"
    }
  ],
  [
    {
      "text": "BBB"
    }
  ],
  [
    {
      "text": "11"
    },
    {
      "text": "12"
    },
    {
      "text": "13"
    }
  ],
  [
    {
      "text": "A1"
    },
    {
      "text": "B2"
    },
    {
      "text": "C3"
    }
  ],
  [
    {
      "text": "Z"
    }
  ]
]

预期输出JSON

[
    [
        [
            {
                "text": "AAA"
            }
        ],
        [
            {
                "text": "BBB"
            }
        ],
        [
            {
                "text": "11"
            }
        ],
        [
            {
                "text": "A1"
            }
        ],
        [
            {
                "text": "Z"
            }
        ]
    ],
    [
        [
            {
                "text": "AAA"
            }
        ],
        [
            {
                "text": "BBB"
            }
        ],
        [
            {
                "text": "12"
            }
        ],
        [
            {
                "text": "B2"
            }
        ],
        [
            {
                "text": "Z"
            }
        ]
    ],
    [
        [
            {
                "text": "AAA"
            }
        ],
        [
            {
                "text": "BBB"
            }
        ],
        [
            {
                "text": "13"
            }
        ],
        [
            {
                "text": "C3"
            }
        ],
        [
            {
                "text": "Z"
            }
        ]
    ]
]

JOLT 转换规则

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "@": "[&1].[]"
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "@": "[#2].[]"
        }
      }
    }
  }
]

规则说明

  1. 第一个Shift操作:按子数组元素的索引进行映射,长度为3的子数组会将第0、1、2位元素分别分配到结果的第0、1、2个数组中;长度为1的子数组仅有的元素会被自动填充到所有目标数组,实现重复保留的效果。
  2. 第二个Shift操作:将每个目标数组中的元素重新包装为嵌套数组结构,确保输出中每个text对象都被包裹在单独的数组里,与预期格式完全匹配。

内容的提问来源于stack exchange,提问作者VinceL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 14:00:35