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

基于NiFi的JOLT转换:将前缀式JSON转为嵌套结构

NiFi JOLT 转换:带前缀属性转嵌套对象

示例输入JSON

假设你的根层级数组输入JSON如下:

[
  {
    "id": 1,
    "user_name": "张三",
    "user_age": 28,
    "addr_street": "XX街道",
    "addr_city": "北京",
    "addr_zip": "100000"
  },
  {
    "id": 2,
    "user_name": "李四",
    "user_age": 32,
    "addr_street": "YY大道",
    "addr_city": "上海",
    "addr_zip": "200000"
  }
]

期望输出JSON

目标嵌套结构:

[
  {
    "id": 1,
    "user": {
      "name": "张三",
      "age": 28
    },
    "address": {
      "street": "XX街道",
      "city": "北京",
      "zip": "100000"
    }
  },
  {
    "id": 2,
    "user": {
      "name": "李四",
      "age": 32
    },
    "address": {
      "street": "YY大道",
      "city": "上海",
      "zip": "200000"
    }
  }
]

正确的JOLT转换规则

使用shift类型的JOLT规范,通过前缀匹配完成属性映射:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "id": "[&1].id",
        "user_*": "[&1].user.&(0,1)",
        "addr_*": "[&1].address.&(0,1)"
      }
    }
  }
]

规则说明

  • * 遍历根数组中的每个元素
  • [&1] 保留当前数组元素的索引,保证输出仍为数组结构
  • user_* 匹配所有以user_开头的属性,&(0,1)提取前缀后的部分作为嵌套对象的键
  • addr_* 同理,将对应属性映射到address嵌套对象中

注意事项

  • 如果前缀与属性名用下划线以外的分隔符(比如.),需要调整&(0,1)的索引参数,例如分隔符为.时改为&(0,2)
  • 确保NiFi的JOLT处理器选择的是shift类型的转换规范

内容的提问来源于stack exchange,提问作者Filipe Miguel Ferreira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:50:22