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

如何用NiFi的Jolt Transform提取匹配JSON数组生成指定结构

使用Apache NiFi Jolt Transform实现数组匹配与结构转换

现有如下JSON结构,需要将idByLine数组中idLine与orderLine数组中ID匹配的项,把对应的orderId作为新的idLine字段,同时保留orderLine里的其他字段,最终生成指定格式的数组输出。

输入JSON

{
  "orderLine": [
    {
      "ID": "1",
      "Country": "Country1",
      "Email": [
        {
          "email1": "email1"
        },
        {
          "email2": "email2"
        }
      ]
    },
    {
      "ID": "2",
      "Country": "Country2",
      "Email": [
        {
          "email1": "email1"
        },
        {
          "email2": "email2"
        }
      ]
    }
  ],
  "idByLine": [
    {
      "idLine": "1",
      "orderId": "AMD123"
    },
    {
      "idLine": "2",
      "orderId": "AMD555"
    }
  ]
}

期望输出JSON

[
 {
    "idLine": "AMD123",
    "ID": "1",
    "Country": "Country1",
    "Email": [
      {
        "email1": "email1"
      },
      {
        "email2": "email2"
      }
    ]
 },
 {
    "idLine": "AMD555",
    "ID": "2",
    "Country": "Country2",
    "Email": [
      {
        "email1": "email1"
      },
      {
        "email2": "email2"
      }
    ]
 }
]

Jolt转换规范(Chain模式)

[
  {
    "operation": "shift",
    "spec": {
      "idByLine": {
        "*": {
          "idLine": "@(1,orderId).id"
        }
      },
      "orderLine": "&"
    }
  },
  {
    "operation": "shift",
    "spec": {
      "orderLine": {
        "*": {
          "ID": {
            "@(2,&)": {
              "@(4,@(1)).id": "[&3].idLine",
              "*": "[&3].&"
            }
          },
          "*": "[&1].&"
        }
      }
    }
  },
  {
    "operation": "remove",
    "spec": {
      "*": {
        "id": ""
      }
    }
  }
]

转换逻辑说明

  1. 第一步Shift操作:将idByLine转换成以idLine值为键、orderId为值的临时映射,同时保留orderLine数组,为后续匹配做准备。
  2. 第二步Shift操作:遍历orderLine数组的每一项,用当前项的ID匹配第一步生成的临时映射,把对应的orderId赋值给新的idLine字段,同时原样保留orderLine中的其他字段(如Country、Email),并整理成目标数组结构。
  3. 第三步Remove操作:清理转换过程中生成的临时节点,保证输出结构整洁。

NiFi配置说明

在Apache NiFi的JoltTransformJSON处理器中,选择Chain作为Jolt Transformation Language,将上述JSON规范粘贴到Jolt Specification框中,输入指定的JSON数据即可得到期望输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 12:33:14