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

如何在Apache NiFi中用Jolt转换嵌套JSON至MySQL表

Jolt转换规范适配MySQL表结构

假设的嵌套JSON输入示例

先基于常见的API返回结构给出输入样例,你可以根据实际API输出调整:

{
  "brandInfo": {
    "brandName": "Apple",
    "models": [
      {
        "modelName": "iPhone 14",
        "totalCount": 100,
        "products": [
          {
            "systemCode": "IOS16",
            "sku": "APL-IP14-001",
            "sellerInfo": {
              "sellerName": "Apple Store"
            }
          },
          {
            "systemCode": "IOS16",
            "sku": "APL-IP14-002",
            "sellerInfo": {
              "sellerName": "Authorized Reseller"
            }
          }
        ]
      }
    ]
  }
}

对应的Jolt转换规范

[
  {
    "operation": "shift",
    "spec": {
      "brandInfo": {
        "brandName": "Brand",
        "models": {
          "*": {
            "modelName": "Model",
            "totalCount": "total_count_model",
            "products": {
              "*": {
                "systemCode": "systemcode",
                "sku": "sku",
                "sellerInfo": {
                  "sellerName": "seller"
                },
                "@(2,brandName)": "Brand",
                "@(1,modelName)": "Model",
                "@(1,totalCount)": "total_count_model"
              }
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "products": {
        "*": "[]"
      }
    }
  }
]

转换说明

  1. 第一步Shift操作:

    • 映射顶层品牌名到Brand字段,模型名到Model,模型总数量到total_count_model
    • 遍历每个产品条目,将systemCode、sku、卖家名字分别映射到目标列systemcode、sku、seller
    • 通过@(n,key)语法,将上层的品牌、模型、总数量字段复制到每个产品条目里,保证每行数据都包含完整的目标列
  2. 第二步Shift操作:

    • 将嵌套在products数组里的每个条目提取出来,形成一个扁平化的数组,每个数组元素对应MySQL表的一行数据

自定义调整要点

  • 如果你的API返回字段名不同,直接修改spec里的键对应关系(比如你的API里品牌字段叫brand,就把brandName改成brand)
  • 如果嵌套层级不同,调整@(n,key)中的n值(n表示向上追溯的层级数,比如要取上两层的字段就用@(2,key))
  • 如果存在多个品牌或模型,*通配符会自动遍历所有数组元素,无需额外修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 08:45:48