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

NiFi JoltTransformJSON如何将转换结果封装到input字段并新增isInput字段

问题解答

方案1:仅使用JoltTransformJSON实现(推荐)

完全可以仅通过修改JOLT Spec实现目标需求,无需额外引入其他处理器。你可以将原来的JOLT Spec替换为如下内容:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "id": "input[&1].id"
      }
    }
  },
  {
    "operation": "default",
    "spec": {
      "input": {
        "*": {
          "Status": "null",
          "Expired": "null",
          "First_Name": "null"
        }
      },
      "isInput": true
    }
  }
]

上述Spec的逻辑说明:

  • 第一步shift操作将原数组中每个元素的id字段映射到根节点下input数组的对应位置,而非直接生成根数组
  • 第二步default操作同时完成两个逻辑:给input数组的每个元素补充缺失的三个默认字段,同时在根节点新增isInput字段并赋值为true
    转换后直接输出符合预期的JSON结构。

方案2:使用ReplaceText实现(不推荐)

如果确实需要走ReplaceText的方案,操作步骤如下:

  1. 提取流内容为属性:在JoltTransformJSON处理器后新增ExtractText处理器,添加自定义属性input,属性值填写正则表达式(.+),同时勾选Dot All配置项,即可将Jolt输出的JSON数组完整提取为名为input的流文件属性。
  2. 配置ReplaceText:
    • 搜索值填写(?s)(^.*$)
    • 替换值填写
    {
      "isInput": true,
      "input": ${input}
    }
    
    • 替换策略选择Replace entire text,字符集配置为UTF-8即可。

注意:该方案存在JSON转义风险,若内容中包含双引号、换行符等特殊字符可能导致最终JSON格式错误,因此优先推荐方案1。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:27:00