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

如何通过JOLT转换利用字段值重命名字段?

JOLT转换:将属性值拼接至字段名前重命名字段

需求说明

需要将输入JSON中auth_id和read_time的字段值以冒号(:)分隔,拼接至所有现有字段名前,生成扁平化的键值对结构。

原Spec问题分析

你编写的Spec中,shift操作的"@": "@(2,ukey):&"会被JOLT解析为层级结构:@(2,ukey)作为父键,:&作为子键(JOLT默认将冒号视为层级分隔符),因此生成了嵌套的JSON结构,而非预期的单层级带冒号键名。

修正后的JOLT Spec

方案一:使用临时前缀字段

[
  {
    "operation": "modify-default-beta",
    "spec": {
      // 预拼接auth_id与read_time作为统一前缀
      "prefix": "=concat(@(1,auth_id),':',@(1,read_time))"
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        // 用concat函数将前缀、冒号、原字段名拼接为完整键名
        "@": "=concat(@(2,prefix),':',&)"
      }
    }
  }
]

方案二:直接在shift阶段完成拼接(更简洁)

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        // 直接拼接auth_id、read_time与原字段名
        "@": "=concat(@(2,auth_id),':',@(2,read_time),':',&)"
      }
    }
  }
]

工作原理

  • 方案一通过modify-default-beta生成临时字段prefix存储拼接好的前缀,再在shift阶段用concat函数将前缀与原字段名合并为完整键名,避免层级嵌套。
  • 方案二省略临时字段,直接在shift阶段一次性完成所有值的拼接,生成目标键名。

两种方案均可在NiFi的JoltTransformJSON处理器中正常运行,输出符合预期的扁平化JSON结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:38:19