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

如何在Apache NiFi中用Jolt/ReplaceText处理器展平多层JSON数组

Apache NiFi实现JSON嵌套数组展平的两种方法

需求说明

输入JSON:

{
  "id": 9256123,
  "data": [
    {
      "id": 242424,
      "attributes": [
        {
          "currency": "EUR",
          "price": "99,99"
        }
      ]
    },
    {
      "id": 22222,
      "attributes": [
        {
          "currency": "EUR",
          "price": "299,99"
        }
      ]
    }
  ]
}

期望输出JSON:

{
  "id": 9256123,
  "data": [
    {
      "id": 242424,
      "currency": "EUR",
      "price": "99,99"
    },
    {
      "id": 22222,
      "currency": "EUR",
      "price": "299,99"
    }
  ]
}

方法一:使用JoltTransformJSON处理器

Jolt是NiFi中专门处理JSON结构转换的工具,适合复杂嵌套结构调整,步骤如下:

  1. 添加JoltTransformJSON处理器到流程,连接输入数据源。
  2. 配置核心参数:
    • Jolt Specification:选择Inline类型,粘贴以下转换规则:
      [
        {
          "operation": "shift",
          "spec": {
            "id": "id",
            "data": {
              "*": {
                "id": "data[&1].id",
                "attributes": {
                  "*": {
                    "currency": "data[&3].currency",
                    "price": "data[&3].price"
                  }
                }
              }
            }
          }
        }
      ]
      
    • Jolt Specification DSL:保持默认的Chainr即可。

规则说明

  • shift操作负责字段重映射:
    • 保留顶层id字段不变;
    • 遍历data数组的每个元素(*通配符),保留元素自身的id;
    • 深入attributes数组子元素,将currency和price映射到对应data元素层级(&3表示向上回溯3层的数组索引,对应data数组当前元素位置)。

方法二:使用ReplaceText处理器

如果JSON结构固定(attributes数组仅含一个对象,字段固定为currency和price),可通过正则替换快速实现,步骤如下:

  1. 添加ReplaceText处理器到流程,连接输入数据源。
  2. 配置核心参数:
    • Search Value:选择Regular Expression,输入正则:
      "attributes":\s*\[\s*\{\s*"currency":\s*"([^"]+)"\s*,\s*"price":\s*"([^"]+)"\s*\}\s*\]
      
    • Replacement Value:输入替换内容:
      "currency": "$1", "price": "$2"
      
    • Replacement Strategy:选择Replace All;
    • Character Set:设置为UTF-8。

正则说明

  • \s*匹配任意空白字符(兼容JSON中的换行、空格格式);
  • ([^"]+)捕获currency和price的字段值,替换时通过$1、$2引用捕获内容;
  • 整体匹配attributes数组的完整结构,替换为展平后的字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 22:26:25