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

如何用JOLT Transform简化Apache NiFi中的JSON格式转换流程?

可以用JOLT Transform简化流程,完全替代第2到第7步的操作

当然可以,JOLT Transform能一次性完成解析带转义的JSON字符串、转换数据类型、清理格式这些操作,不用再折腾ExtractText和多次ReplaceText。

核心思路

AttributeToJSON输出的是带转义的JSON字符串(比如"{\"pages\":\"2\",\"find\":\"{\\\"name\\\":\\\"Alice\\\"}\",\"sort\":\"[\\\"age\\\",\\\"desc\\\"]\"}"),JOLT可以通过内置的jsonParse和toNumber函数直接处理:

  1. 先把外层的转义JSON字符串解析成JSON对象
  2. 对内层嵌套的JSON字符串(比如find、sort的值)再次解析
  3. 把pages属性转换为数字类型
  4. 最终输出干净的标准JSON

具体JOLT配置

在NiFi的JOLTTransformJSON处理器中,使用以下JOLT规格:

[
  // 解析外层带转义的JSON字符串为对象
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "temp": "=jsonParse(@(1))"
    }
  },
  // 转换数据类型+解析内层嵌套JSON
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "temp": {
        "pages": "=toNumber",
        "find": "=jsonParse",
        "sort": "=jsonParse"
      }
    }
  },
  // 移除临时外层节点,输出最终JSON
  {
    "operation": "shift",
    "spec": {
      "temp": {
        "*": "&"
      }
    }
  }
]

配置说明

  • 第一步modify-overwrite-beta:用jsonParse(@(1))把流文件内容(AttributeToJSON的输出)解析成JSON对象,存到临时节点temp里
  • 第二步:对temp下的pages执行toNumber转数字,对find和sort用jsonParse解析它们的转义字符串为对应对象/数组
  • 第三步shift:把temp下的所有字段移到根节点,去掉临时节点,得到标准JSON输出

替换效果

这个JOLT处理器直接替代了你原来的:

  • AttributeToJSON之后的ExtractText(提取JSON内容)
  • 多次ReplaceText(去反斜杠、清理格式)
  • 任何转换数据类型的步骤

流程从多步压缩成AttributeToJSON → JOLTTransformJSON两步,更简洁也更稳定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:35:19